如何将 Vec < char > 转换为字符串

如何转换 Vec<char>字符串形式,以便我可以打印它?

74369 次浏览

在迭代器上使用 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 中的字符串是字节序列(u8) ,表示 UTF-8编码的文本。它们不直接映射到 char序列。

下面是一个使用矢量的更易读的版本:

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