25_rust_迭代器

发布时间 2023-11-09 09:43:42作者: 00lab

迭代器

什么是迭代器:迭代器模式是对一系列项执行某些任务,迭代器负责遍历每个项,确定序列(遍历)何时完成。
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