web-dev-qa-db-ja.com

Vec <char>を文字列に変換する方法

Vec<char>を文字列形式に変換して印刷できるようにするにはどうすればよいですか?

48
user3596561

イテレータで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エンコード:charsのシーケンスに直接マップしません。

94

ベクトルを使用するより読みやすいバージョンを次に示します。

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();
}

collectFromIterator::from_iterへの呼び出しで実装されることに注意してください:

fn collect<B: FromIterator<Self::Item>>(self) -> B
where
    Self: Sized,
{
    FromIterator::from_iter(self)
}
18
malbarbo