高階関数
Rust は高階関数 (HOF) を提供します。これらは、1 つ以上の関数を受け取ったり、より有用な関数を生成したりする関数です。HOF と遅延イテレータは、Rust に関数型の風味を与えます。
fn is_odd(n: u32) -> bool { n % 2 == 1 } fn main() { println!("二乗が1000未満かつ奇数であるすべての数の合計を求める"); let upper = 1000; // 命令型アプローチ // アキュムレータ変数を宣言 let mut acc = 0; // 反復処理: 0, 1, 2, ... から無限大まで for n in 0.. { // 数を二乗する let n_squared = n * n; if n_squared >= upper { // 上限を超えた場合はループを抜ける break; } else if is_odd(n_squared) { // 奇数なら値を累積する acc += n; } } println!("命令型スタイル: {}", acc); // 関数型アプローチ let sum: u32 = (0..).take_while(|&n| n * n < upper) // 上限未満 .filter(|&n| is_odd(n * n)) // 奇数のもの .sum(); // それらを合計する println!("関数型スタイル: {}", sum); }