test regular online for expressions creator string rust

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_chars no existe, y std::strbuf::StrBuf ahora es simplemente String ). 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 .