LoginSignup
11
6

More than 5 years have passed since last update.

Rustでsum

Last updated at Posted at 2015-11-05

はじめに

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

11
6
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
6