Trait std::iter::Iterator

pub trait Iterator {
    type Item;

    // Required method
    fn next(&mut self) -> Option<Self::Item>;
}

For loop

For 循环相当于一个语法糖, 本质也是用迭代器。

fn main() {
    let v = vec![1,2,3,4,5];
    for i in v {
        println!("{}", i);
    }
}

就相当于

fn main() {
		let v = vec![1,2,3,4,5];
		let mut iter = v.into_iter();
		loop {
				match iter.next() {
						Some(i) => println!("{}", i),
						None => break,
				}
		}
}

常用生成迭代器的方法

常用生成迭代器的方法有以下几种:

  1. iter() -> &T
  2. iter_mut() -> &mut T
  3. into_iter() -> T 这三个也对应所有权的三种借用方式。

itertools

itertools 是一个 Rust 的库, 提供了很多迭代器的工具函数, 用于处理迭代器。