web-dev-qa-db-fra.com

Comment convertir une chaîne en un vecteur d'octets en rouille?

C'est peut-être la question la plus stupide de Rustlang, mais je promets que j'ai fait de mon mieux pour trouver la réponse dans la documentation ou tout autre endroit sur le Web.

Je peux convertir une chaîne en un vecteur d'octets comme celui-ci:

let bar = bytes!("some string");

Malheureusement, je ne peux pas le faire de cette façon

let foo = "some string";
let bar = bytes!(foo);

Car bytes! attend un littéral de chaîne.

Mais alors, comment puis-je convertir mon foo en un vecteur d'octets?

26
Christoph

(&str).as_bytes vous donne une vue d'une chaîne comme &[u8] tranche d'octets (qui peut être appelée sur String car cela dérive vers str, et il y a aussi String.into_bytes consommera un String pour vous donner un Vec<u8>.

Utilisez le .as_bytes version si vous n'avez pas besoin de posséder les octets.

fn main() {
    let string = "foo";
    println!("{:?}", string.as_bytes()); // prints [102, 111, 111]
}

BTW, Les conventions de dénomination pour les fonctions de conversion sont utiles dans des situations comme celles-ci, car elles vous permettent de connaître approximativement le nom que vous recherchez.

26
huon