我有这个结构:
struct MyStruct {
myvalue: u32,
yourvalue: u32,
}
如果我有a: Vec<MyStruct>
,我怎样才能获得所有MyStruct.myvalue
的总和?我正在寻找像a.iter.sum(sum of myvalue)
这样的东西。
我知道我可以使用for
循环执行此操作,但我希望能够使用一行代码执行此操作。
答案 0 :(得分:6)
要在一行中对MyStruct.myvalue
求和,您可以使用Iterator::map
和Iterator::sum
。
fn sum_myvalue(a: &[MyStruct]) -> u32 {
a.iter().map(|s| s.myvalue).sum()
}
// Later on you can use this like so:
//
sum_myvalue(a);
另见: