适配器和消费者

迭代器方法可以分为两个不同的组:

适配器

适配器使用迭代器并返回另一个迭代器

//         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]

消费者的其他例子包括 findfoldsum

let my_squared_sum: u32 = (1..6).map(|x| x * x).sum();
println!("{:?}", my_squared_sum);

输出

55