Ответ 1
Вы можете использовать метод as_bytes:
fn f(s: &[u8]) {}
pub fn main() {
let x = "a";
f(x.as_bytes())
}
или, в вашем конкретном примере, вы можете использовать байтовый литерал:
let x = b"a";
f(x)
Это кажется тривиальным, но я не могу найти способ сделать это.
Например,
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].
Вы можете использовать метод as_bytes:
fn f(s: &[u8]) {}
pub fn main() {
let x = "a";
f(x.as_bytes())
}
или, в вашем конкретном примере, вы можете использовать байтовый литерал:
let x = b"a";
f(x)