web-dev-qa-db-fra.com

Comment convertir Vec <char> en une chaîne

Comment convertir Vec<char> sous forme de chaîne pour pouvoir l'imprimer?

48
user3596561

Utilisez collect() sur un itérateur:

let v = vec!['a', 'b', 'c', 'd'];
let s: String = v.into_iter().collect();
println!("{}", s);

Le vecteur d'origine sera consommé. Si vous devez le conserver, utilisez v.iter():

let s: String = v.iter().collect();

Il n'y a pas de moyen plus direct car char est une valeur scalaire Unicode 32 bits, et les chaînes en Rust sont des séquences d'octets (u8) Représentant le texte en Encodage UTF-8. Ils ne sont pas mappés directement aux séquences de chars.

94

Voici une version plus lisible qui consomme le vecteur:

use std::iter::FromIterator;

fn main() {
    let v = vec!['a', 'b', 'c', 'd'];
    let s = String::from_iter(v);
    // vs
    let s: String = v.into_iter().collect();
}

Notez que collect est implémenté avec un appel à FromIterator::from_iter:

fn collect<B: FromIterator<Self::Item>>(self) -> B
where
    Self: Sized,
{
    FromIterator::from_iter(self)
}
18
malbarbo