はじめに
この記事は rustc 1.4.0 (8ab8581f6 2015-10-27) で動作確認をしています。
Rust で sum
Rustでは現在sum(集計)をするには、
std::iter::Iterator – sum
fn sum<S = Self::Item>(self) -> S
where S: Add<Self::Item, Output=S> + Zero
というメソッドが用意されているのですが、現在こちらはunstableとなっているメソッドでissueが上がっており、まだ使用を推奨できません。
(rust v1.29.1現在では問題なく使用可能(std::iter::Iterator – sum))
そこで代わりとなる方法の紹介です。
foldを使う
let sum: i64 = array.map(|a| a.count ).fold(0, |sum, i| sum + i);
やっていることはただの加算ですが、for等で回すよりもすっきりとかけます。
追記
コメント欄より教えて頂きました
let sum: i64 = array.iter().fold(0, |sum, a| sum + a.count);
mapは省略することが可能です!