Cela semble anodin, mais je ne trouve pas de moyen de le faire.
Par exemple,
fn f(s: &[u8]) {}
pub fn main() {
let x = "a";
f(x)
}
Ne parvient pas à compiler avec:
error: mismatched types:
expected `&[u8]`,
found `&str`
(expected slice,
found str) [E0308]
documentation , cependant, déclare que:
La représentation réelle des chaînes a des correspondances directes avec les tranches: & str est identique à & [u8].
Vous pouvez utiliser la méthode as_bytes :
fn f(s: &[u8]) {}
pub fn main() {
let x = "a";
f(x.as_bytes())
}
ou, dans votre exemple spécifique, vous pouvez utiliser un littéral d'octet:
let x = b"a";
f(x)