Wie konvertiere Vec<char>
ich in eine Zeichenfolge, damit ich sie drucken kann?
79
Verwendung collect()
auf einem Iterator:
let v = vec!['a', 'b', 'c', 'd'];
let s: String = v.into_iter().collect();
println!("{}", s);
Der ursprüngliche Vektor wird verbraucht. Wenn Sie es behalten müssen, verwenden Sie v.iter()
:
let s: String = v.iter().collect();
Es gibt keinen direkteren Weg, da char
es sich um einen 32-Bit-Unicode-Skalarwert handelt und Zeichenfolgen in Rust Folgen von Bytes ( u8
) sind, die Text in UTF-8-Codierung darstellen. Sie werden nicht direkt Sequenzen von char
s zugeordnet.
Hier ist eine besser lesbare Version, die den Vektor verbraucht:
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();
}
Beachten Sie, dass dies collect
mit einem Aufruf an Folgendes implementiert wird FromIterator::from_iter
:
fn collect<B: FromIterator<Self::Item>>(self) -> B
where
Self: Sized,
{
FromIterator::from_iter(self)
}