迭代器
您可以自行实现 Iterator
特征:
struct Fibonacci { curr: u32, next: u32, } impl Iterator for Fibonacci { type Item = u32; fn next(&mut self) -> Option<Self::Item> { let new_next = self.curr + self.next; self.curr = self.next; self.next = new_next; Some(self.curr) } } fn main() { let fib = Fibonacci { curr: 0, next: 1 }; for (i, n) in fib.enumerate().take(5) { println!("fib({i}): {n}"); } }
-
Iterator
特征会对集合实现许多常见的函数程序操作, 例如map
filter `和
reduce` 等。您可以通过此特征找到有关它们的所有 文档。在 Rust 中,这些函数应生成代码,且生成的代码应与等效命令式实现一样 高效。 -
IntoIterator
是迫使 for 循环运作的特征。此特征由集合类型 (例如Vec<T>
)和相关引用(例如&Vec<T>
和&[T]
)而实现。此外,范围也会实现这项特征。因此, 您可以使用for i in some_vec { .. }
来遍历某矢量,但some_vec.next()
不存在。