2015-12-04 5 views
1

Я попытался использовать привязки LAPACK для Rust, когда я пришел к некоторому синтаксису, о котором я ничего не мог найти.Что означают буквы, заключенные двумя одинарными кавычками рядом с аргументом функции?

Пример кода из https://github.com/stainless-steel/lapack:

let n = 3; 

let mut a = vec![3.0, 1.0, 1.0, 1.0, 3.0, 1.0, 1.0, 1.0, 3.0]; 
let mut w = vec![0.0; n]; 
let mut work = vec![0.0; 4 * n]; 
let lwork = 4 * n as isize; 
let mut info = 0; 

lapack::dsyev(b'V', b'U', n, &mut a, n, &mut w, &mut work, lwork, &mut info); 

for (one, another) in w.iter().zip(&[2.0, 2.0, 5.0]) { 
    assert!((one - another).abs() < 1e-14); 
} 

Что b'V ' и b'U' означает?

ответ

4

b'A' означает создать байт буквального. В частности, это будет u8, содержащее значение ASCII символа:

fn main() { 
    let what = b'a'; 
    println!("{}", what); 
    // let() = what; 
} 

Закомментированная линия показывает, как найти тип.

b"hello" подобен, но дает ссылку на массив u8, байт строки:

fn main() { 
    let what = b"hello"; 
    println!("{:?}", what); 
    // let() = what; 
} 

вещи, как это задокументированы в Syntax Index, которая в настоящее время доступна только в ночной версии этого Docs.

4

Он создает значение u8 со значением ASCII символа между цитатой.

Для литералов ASCII это то же самое, что и письменные 'V' as u8.

Кроме того, префикс b в строке с двойными кавычками создает массив байтов, содержащий содержимое UTF8 строки.

let s: &[u8; 11] = b"Hello world"; 

 Смежные вопросы

  • Нет связанных вопросов^_^