string - regular - Cómo convertir Vec<char> a una cadena
regular expression for (3)
¿Cómo convertir Vec<char> al formato de cadena para que pueda imprimirlo?
Nota del editor: Esta respuesta fue correcta para las versiones de Rust anteriores a la versión 1.0, pero ahora está desactualizada (
from_charsno existe, ystd::strbuf::StrBufahora es simplementeString). Se han actualizado otras respuestas para abordar Rust 1.0.
std::str::from_chars(char_vector.as_slice()); // creates a ~str
char_vector.iter().map(|c| *c).collect::<std::strbuf::StrBuf>();
Documentos: std::str::from_chars
(El último se puede utilizar para recopilar a ~str también, simplemente cambiando la StrBuf tipo StrBuf ).
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)
}
Use collect() en un iterador:
let v = vec![''a'', ''b'', ''c'', ''d''];
let s: String = v.into_iter().collect();
println!("{}", s);
El vector original será consumido. 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 .