¿Cómo convertir Vec<char>
a forma de cadena para poder imprimirlo?
83
Usar collect()
en un iterador:
let v = vec!['a', 'b', 'c', 'd'];
let s: String = v.into_iter().collect();
println!("{}", s);
Se consumirá el vector original. Si necesita conservarlo, use v.iter()
:
let s: String = v.iter().collect();
No hay una forma más directa porque char
es un valor escalar Unicode de 32 bits y las cadenas en Rust son secuencias de bytes ( u8
) que representan texto en codificación UTF-8. No se asignan directamente a secuencias de char
s.
Aquí hay una versión más legible que consume el vector:
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();
}
Tenga en cuenta que collect
se implementa con una llamada a FromIterator::from_iter
:
fn collect<B: FromIterator<Self::Item>>(self) -> B
where
Self: Sized,
{
FromIterator::from_iter(self)
}