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

如何将Vec<char>转换为字符串形式以便可以打印?

user3596561 asked 2020-01-23T15:38:13Z
2个解决方案
96 votes

在迭代器上使用char

let v = vec!['a', 'b', 'c', 'd'];
let s: String = v.into_iter().collect();
println!("{}", s);

原始向量将被消耗。 如果需要保留它,请使用char

let s: String = v.iter().collect();

没有更直接的方法,因为char是32位Unicode标量值,Rust中的字符串是字节序列(u8),表示以UTF-8编码的文本。 它们不直接映射到char的序列。

Vladimir Matveev answered 2020-01-23T15:38:35Z
18 votes

这是使用向量的更具可读性的版本:

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

请注意,通过调用FromIterator::from_iter实现了collect

fn collect<B: FromIterator<Self::Item>>(self) -> B
where
    Self: Sized,
{
    FromIterator::from_iter(self)
}
malbarbo answered 2020-01-23T15:38:59Z
translate from https://stackoverflow.com:/questions/23430735/how-to-convert-vecchar-to-a-string