Wie konvertiere Vec<char>ich in eine Zeichenfolge, damit ich sie drucken kann?
Wie konvertiere Vec<char>ich in eine Zeichenfolge, damit ich sie drucken kann?
Antworten:
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 chares 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 chars 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 collectmit einem Aufruf an Folgendes implementiert wird FromIterator::from_iter:
fn collect<B: FromIterator<Self::Item>>(self) -> B
where
Self: Sized,
{
FromIterator::from_iter(self)
}