#[test]
fn test() {
let vec = vec![1, 2, 3, 4, 5, 6];
assert_eq!(vec.len()%2, 0);
let _grouped = vec.iter().step_by(2).zip(
vec.iter().skip(1).step_by(2)
).inspect(|(&op, &num)| {
println!("op={} num={}", op, num);
}).collect::<Vec<(_,_)>>();
/*
op=1 num=2
op=3 num=4
op=5 num=6
*/
}
使用 std 的解法:
- for 循环
- zip,见上述代码;坏处是慢
- slice.chunks;坏处是没办法直接解包,并且只能对 slice 使用,不能对 iterator 使用
let grouped = vec.chunks(2).
inspect(|&slice| println!("op = {:?} num = {:?}", slice[0], slice[1])).
collect::<Vec<_>>();
println!("{:?}", grouped);
非 std 的解法:
- https://docs.rs/itertools/latest/itertools/trait.Itertools.html#method.chunks
据说有不 Send 的问题 - https://github.com/TennyZhuang/iter-chunks
tygg 自己写的库 - https://github.com/rust-lang/rust/issues/98326
标准库的 unstable