はじめに

この記事は 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は省略することが可能です!

广告
将在 10 秒后关闭
bannerAds