迭代器
什么是迭代器:迭代器模式是对一系列项执行某些任务,迭代器负责遍历每个项,确定序列(遍历)何时完成。
rust的迭代器:
- layzy(懒惰的):除非调用消费迭代器的方法,否则迭代器本身没任何效果。
fn main() {
let v1 = vec![1, 2, 3];
let v1_iter = v1.iter(); // 获得迭代器,需要对其使用才有效
for v in v1_iter {
println!("{}", val);
}
}
Iterator trait和next方法
Iterator trait
所有迭代器都实现了Iterator trait,定义于标注库,定义大致如下:
pub trait Iterator {
type Item;
fn next(&mut self) -> Option<Self::Item>;
}
type Item和Self::Item定义了与此该trait关联的类型。实现了Iterator trait需要定义一个Item类型,用于next方法的返回类型(迭代器的返回类型)。
Iterator trait仅要求实现一个方法:next;
next方法:
- 每次返回迭代器的一项
- 返回结果包含在Some里
- 迭代结束,返回None