介面卡和消費者

迭代器方法可以分為兩個不同的組:

介面卡

介面卡使用迭代器並返回另一個迭代器

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