如何将字符迭代器转换为字符串?

40
我需要像.collect()一样的东西,但是它会生成String而不是char容器,即我需要chars()的反向操作。我在文档中找不到适合的内容。当然,我可以自己实现这样的函数,但我相信这个问题肯定有标准解决方案。
我正在使用稳定版本的Rust。
1个回答

59

.collect() 是通用的,它可以生成任何集合,并且它可以为您生成 String!

let s = "abc".chars().collect::<String>();

特质 FromIterator 决定了您可以将哪些元素收集到哪种类型的集合中,而在实现者中,您可以找到两次出现的String

impl FromIterator<char> for String
impl<'a> FromIterator<&'a str> for String

无论是char迭代器还是&str迭代器,都可以被收集成String


1
没错,我试图使用collect但是它没有起作用。现在我明白了,这是因为我有一个&char的迭代器而不是char。我在collect之前添加了map来执行转换,现在它可以工作了。谢谢。 - Simon
7
顺便说一下,这种转换有一个简写方式(&T -> T),即迭代器适配器.cloned() - bluss

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接