适配器和消费者
迭代器方法可以分为两个不同的组:
适配器
适配器使用迭代器并返回另一个迭代器
// Iterator Adapter
// | |
let my_map = (1..6).map(|x| x * x);
println!("{:?}", my_map);
输出
Map { iter: 1..6 }
请注意,未枚举值,这表明迭代器未被急切评估 - 迭代器是懒惰的。
消费者
消费者使用迭代器并返回除迭代器之外的其他东西,在过程中使用迭代器。
// Iterator Adapter Consumer
// | | |
let my_squares: Vec<_> = (1..6).map(|x| x * x).collect();
println!("{:?}", my_squares);
输出
[1, 4, 9, 16, 25]
消费者的其他例子包括 find
,fold
和 sum
。
let my_squared_sum: u32 = (1..6).map(|x| x * x).sum();
println!("{:?}", my_squared_sum);
输出
55