8.3 Higher Order Functions

Rust가 제공하는 고차정렬함수(HOF). 이 함수는 하나 혹은 그 이상의 함수를 취하고 더 유용한 함수를 생성한다. HOF와 지연 반복자는 Rust의 고유한 기능적 특색이다.

fn is_odd(n: u32) -> bool {
n % 2 == 1
}
fn main() {
println!("Find the sum of all the squared odd numbers under 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 .
break;
} else if is_odd(n_squared) {
// .
acc += n_squared;
}
}
println!("imperative style: {}", acc);
//
let sum_of_squared_odd_numbers: u32 =
(0..).map(|n| n * n) //
.take_while(|&n| n < upper) //
.filter(|n| is_odd(*n)) //
.fold(0, |sum, i| sum + i); //
println!("functional style: {}", sum_of_squared_odd_numbers);
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Option and Iterator implement their fair share of HOFs.

results matching ""

    No results matching ""