Comment convertir Vec<char>
sous forme de chaîne pour pouvoir l'imprimer?
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 char
s.
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)
}