有没有办法在Rust中折叠索引?

Eli*_*off 8 indexing fold rust

在Ruby中,如果我有一个数组,a = [1, 2, 3, 4, 5]并且我希望得到每个元素的总和乘以它的索引

a.each.with_index.inject(0) {|s,(i,j)| s + i*j}    
Run Code Online (Sandbox Code Playgroud)

有没有惯用的方法在Rust做同样的事情?到目前为止,我有

a.into_iter().fold(0, |x, i| x + i)
Run Code Online (Sandbox Code Playgroud)

但这并没有考虑到索引,我无法找到一种方法来让它考虑索引.这是可能的,如果是的话,怎么样?

Sim*_*ead 17

你可以链接它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
}
Run Code Online (Sandbox Code Playgroud)