高阶函数
Rust 提供了高阶函数(Higher Order Functions,HOF)。这些函数接受一个或多个函数作为参数,并/或产生一个更有用的函数。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_squared; } } println!("命令式风格:{}", acc); // 函数式方法 let sum_of_squared_odd_numbers: u32 = (0..).map(|n| n * n) // 所有自然数的平方 .take_while(|&n_squared| n_squared < upper) // 小于上限 .filter(|&n_squared| is_odd(n_squared)) // 筛选奇数 .sum(); // 求和 println!("函数式风格:{}", sum_of_squared_odd_numbers); }