1.8 KiB
1.8 KiB
简介
可组合的外部的迭代。
组织
- 特性 - 迭代器的核心部分。定义了迭代器的种类与用法。这些特性里定义的方法是值得学习的。
- 函数 - 提供了创建基本迭代器的方法。
- 结构体 - 基本上就是特性里提供的各种方法的返回类型。你应该看的创建这些结构体的方法,而不是这些结构体本身。
Iterator特性
这个模块的心脏与灵魂就是Iterator
特性。Iterator
的核心看起来是这样的:
trait Iterator {
type Item;
fn next(&mut self) -> Option<Self::Item>;
}
迭代器的next
方法会返回一个Option<Item>
。当还有元素的时候,返回Some(Item)
。当没有元素的时候,则返回None
。
Iterator
的其它方法都是构建于next
之上的。
迭代器是可组合的,所以可以把它们链接起来进行更复杂的操作。
迭代的三种形式
从collection创建迭代器的三种方法:
iter()
- 迭代的是&T
。iter_mut()
- 迭代的是&mut T
。into_iter()
- 迭代的是T
。
实现迭代器
创建一个迭代器分两步:
- 创建一个结构体来保存迭代器的状态。
- 为这个结构体实现迭代器。
for循环与IntoIterator特性
适配
函数接收一个迭代器再返回一个迭代器,常被叫做“迭代器的适配”,它是“模式适配”的一种形式。
惰性
对引用进行迭代
无限
迭代器不必是有限的。
结构体
特性
Iterator
一个处理迭代器的接口。是迭代器最主要的特性。
-
相关类型
-
依赖的方法
-
提供的方法
pub fn for_each<F>(self, f: F) // 在迭代器的每个元素上调用闭包。