迭代器
Rust大约 1 分钟...
在 rust 中,迭代器是惰性的(layzy)。这也就意味着创建迭代器后,除非主动调用⽅法来消耗并使用迭代器,否则它们不会产⽣任何的实际效果
let v = vec![1, 2, 3];
let v_iter = v.iter();
for item in v {
println!("{}", item);
}
所有的迭代器都实现了标准库中的Iterator trait
,像下面这样
trait Iterator {
type Item;
fn next(&mut self) -> Option<self::Item>;
}
对于迭代器必须要定义一个具体的类型,而这个类型会作为next
方法的返回值类型,每次调用next
方法时,会返回一个包括元素的值Some
,并在结束时返回None
方法
迭代器提供了很多方法:
for_each
- 为每个元素执行一次闭包map
- 遍历每个元素,将结果映射到新的迭代器中并返回filter
- 根据条件过滤符合条件的元素,然后返回any
- 判断是否包含满足条件的元素,返回布尔值all
- 判断所有元素是否满足条件,返回布尔值max
和min
- 返回迭代器中最大和最小的元素sum
和min
- 返回迭代器中所有元素的和