web-dev-qa-db-fra.com

Conversion d'une chaîne en a & [u8]

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].

31
ynimous

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)
39
fjh