Rust 一次映射迭代器n个项

Rust 一次映射迭代器n个项,rust,Rust,我试图一次映射迭代器的项N。大概是这样的: let a = vec![1, 2, 3, 4]; let b = a.iter().map2(|i, j| i + j); b.collect()将产生b=[3,7] 有没有一个简单的方法来实现这一点?没有如前所述。您需要将其分解为“将vec拆分为不相交子集的迭代器”和“对每个子集求和”: 任何不在迭代器上使用.sum()的原因?@loganfsmyth:Two。首先,类型推断更糟糕,您必须显式地注释代码。第二,我早于迭代器::sum,所以我永远不

我试图一次映射迭代器的项N。大概是这样的:

let a = vec![1, 2, 3, 4];
let b = a.iter().map2(|i, j| i + j);
b.collect()
将产生
b=[3,7]


有没有一个简单的方法来实现这一点?

没有如前所述。您需要将其分解为“将vec拆分为不相交子集的迭代器”和“对每个子集求和”:


任何不在
迭代器上使用
.sum()
的原因?@loganfsmyth:Two。首先,类型推断更糟糕,您必须显式地注释代码。第二,我早于
迭代器::sum
,所以我永远不记得它存在于
折叠
会很好的时候。足够公平了!:D
let a = vec![1, 2, 3, 4];
let b = a.chunks(2).map(|chunk| chunk.iter().sum::<i32>());
println!("b = {:?}", b.collect::<Vec<_>>());
use itertools::Itertools;

let a = vec![1, 2, 3, 4];
let a = a.iter().cloned(); // we can't rely on a being a Vec any more.
let b = (&a.chunks(2)).into_iter()
    .map(|chunk| chunk.sum::<i32>())
    .collect::<Vec<_>>();
println!("b = {:?}", b);