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); }