有没有办法在 Rust 中用索引折叠?
Is there a way to fold with index in Rust?
在 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)
但这并没有考虑到索引,我真的想不出一种方法让它来考虑索引。这可能吗?如果可能,怎么做?
你可以用 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
}
在 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)
但这并没有考虑到索引,我真的想不出一种方法让它来考虑索引。这可能吗?如果可能,怎么做?
你可以用 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
}