在Rust中,是否有一种可以使用索引折叠的方法?

15
在Ruby中,如果我有一个数组a = [1, 2, 3, 4, 5],并且我想得到每个元素乘以其索引的总和,我可以这样做。
a.each.with_index.inject(0) {|s,(i,j)| s + i*j}    

Rust中是否有习惯用语来做相同的事情?到目前为止,我已经

a.into_iter().fold(0, |x, i| x + i)

但这并没有考虑索引的因素,我也想不出让它考虑索引的方法。如果可能的话,如何解决?

1个回答

36

你可以将它与enumerate链接使用:

fn main() {
    let a = [1, 2, 3, 4, 5];
    let b = a.into_iter().enumerate().fold(0, |s, (i, j)| s + i * j);

    println!("{:?}", b); // Prints 40
}

1
太棒了!这正是我想要的!谢谢你。 - Eli Sadoff
很高兴能帮到你! :) - Simon Whitehead
如果我使用.enumerate()为我提供折叠中的索引,它会在acccurr之后还是之前添加参数? - duck

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接