迭代器是一种行为设计模式,它允许顺序遍历复杂的数据结构而不暴露其内部细节。
标准迭代器
迭代器在Rust惯用语中被大量使用:
let array = &[1, 2, 3]; |
自定义迭代器
在 Rust 中,定义自定义迭代器的推荐方法是使用标准std::iter 的Iterator trait
impl Iterator for UserIterator<'_> { |
let users = UserCollection::new(); |
上述代码方法next是唯一Iterator必须实现的trait方法。它可以访问大量的标准方法,例如fold、map、for_each。
Rust 迭代器是惰性的,这意味着它们在被告知之前不会执行。这意味着您可以在迭代器上添加任何一系列操作,并且在您使用它之前它永远不会“运行”。
如果将职责链 责任链 中的过滤器组合成一个集合,那么对这个集合需要迭代应用激活一个个过滤器,Rust这种懒惰是有优势的,只有在运行时才会激活,而不会耗费大量预处理过程。
如果将命令模式中一个个命令组合成一个大集合,那么也需要迭代器。