Wang's blog

十三、迭代器

Published on

使用迭代器处理系列数据

使用迭代器可以对一系列数据依次进行处理。直到使用迭代器时,它不产生任何影响。

let v1 = vec![1, 2, 3];

// 获取Vec的迭代器
let v1_iter = v1.iter();

// 在for-in循环中使用迭代器
for val in v1_iter {
    println!("Got: {}", val);
}

迭代器特性

迭代器需要实现类似如下的特性:

pub trait Iterator {
    type Item;

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

消耗适配器

指会消耗掉迭代器的方法,调用这些方法后就不能再使用迭代器。

let v1 = vec![1, 2, 3];
let v1_iter = v1.iter();
let total: i32 = v1_iter.sum();

迭代器适配器

指会生成其它迭代器的方法,它们并不消耗原来的迭代器。

let v1: Vec<i32> = vec![1, 2, 3];
v1.iter().map(|x| x + 1);