2.4 `collect`
04-
collect — Comprehensive Rust1分钟内可阅读完
译文 · 基于 Comprehensive Rust
原文链接: https://google.github.io/comprehensive-rust/iterators/collect.html
2.4 collect
collect 方法可以让你从 Iterator 构建一个集合。
| |
- 任意迭代器都可以收集(collect)到
Vec、VecDeque或HashSet。产出键值对(即二元组)的迭代器还可以收集到HashMap和BTreeMap。向学员展示标准库文档中
collect的定义。指定该方法的泛型类型B有两种方式:
- 使用「涡轮鱼」(turbofish)语法:
some_iterator.collect::<COLLECTION_TYPE>(),如示例所示。这里的_简写让 Rust 推断Vec元素的类型。- 使用类型推断:
let prime_squares: Vec<_> = some_iterator.collect()。可以把示例改写成这种形式。更多探索
- 若学员好奇其工作原理,可以提到
FromIteratortrait,它定义了每种集合类型如何从迭代器构建。- 除了
Vec、HashMap等的基本FromIterator实现外,还有更专门的实现,例如可以把Iterator<Item = Result<V, E>>转换成Result<Vec<V>, E>。- 使用
collect时经常需要类型标注,因为它对返回类型是泛型的,这会让编译器在许多情况下更难推断出正确类型。