Higher Order Functions
Rust cung cấp Higher Order Functions (HOF - Hàm bậc cao). HOF là function nhận vào một hay nhiều function và/hoặc trả về kết quả là một function. Các HOF và các vòng lặp lười (lazy iterator) thêm gia vị cho các tính năng của Rust.
fn is_odd(n: u32) -> bool { n % 2 == 1 } fn main() { println!("Tìm tổng của tất cả các số lẻ có bình phương nhỏ hơn 1000"); let upper = 1000; // Cách tiếp cận mệnh lệnh (imperative approach) // Khai báo một biến tích lũy let mut acc = 0; // Lặp: 0, 1, 2, ... tới vô tận for n in 0.. { // Bình phương số n let n_squared = n * n; if n_squared >= upper { // Thoát khỏi vòng lặp nếu đạt tới giới hạn trên break; } else if is_odd(n_squared) { // Nếu n là số lẻ, cộng dồn n vào biến acc acc += n_squared; } } println!("imperative style: {}", acc); // Cách tiếp cận function (functional approach) let sum_of_squared_odd_numbers: u32 = (0..).map(|n| n * n) // Bình phương tất cả các số tự nhiên .take_while(|&n_squared| n_squared < upper) // Nhỏ hơn giới hạn .filter(|&n_squared| is_odd(n_squared)) // Là số lẻ .sum(); // Và tính tổng println!("functional style: {}", sum_of_squared_odd_numbers); }