Cómo convertir Vec <char> en una cadena


Respuestas:


129

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 chares 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 chars.


27

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 collectse implementa con una llamada a FromIterator::from_iter:

fn collect<B: FromIterator<Self::Item>>(self) -> B
where
    Self: Sized,
{
    FromIterator::from_iter(self)
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.