Подтвердить что ты не робот

Преобразование str в & [u8]

Это кажется тривиальным, но я не могу найти способ сделать это.

Например,

fn f(s: &[u8]) {}

pub fn main() {
    let x = "a";
    f(x)
}

Не удается скомпилировать с помощью:

error: mismatched types:
 expected `&[u8]`,
    found `&str`
(expected slice,
    found str) [E0308]

указывает, что:

Фактическое представление strs имеет прямые отображения для срезов: & str совпадает с & [u8].

4b9b3361

Ответ 1

Вы можете использовать метод as_bytes:

fn f(s: &[u8]) {}

pub fn main() {
    let x = "a";
    f(x.as_bytes())
}

или, в вашем конкретном примере, вы можете использовать байтовый литерал:

let x = b"a";
f(x)