Vec<char>
を文字列形式に変換して印刷できるようにするにはどうすればよいですか?
イテレータでcollect()
を使用します。
_let v = vec!['a', 'b', 'c', 'd'];
let s: String = v.into_iter().collect();
println!("{}", s);
_
元のベクターが消費されます。保持する必要がある場合は、v.iter()
を使用します。
_let s: String = v.iter().collect();
_
char
は32ビットUnicodeスカラー値であり、Rust=の文字列はUTFでテキストを表すバイトのシーケンス(_u8
_) -8エンコード:char
sのシーケンスに直接マップしません。
ベクトルを使用するより読みやすいバージョンを次に示します。
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();
}
collect
はFromIterator::from_iter
への呼び出しで実装されることに注意してください:
fn collect<B: FromIterator<Self::Item>>(self) -> B
where
Self: Sized,
{
FromIterator::from_iter(self)
}