介面卡和消費者
迭代器方法可以分為兩個不同的組:
介面卡
介面卡使用迭代器並返回另一個迭代器
// 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