目录

Rust 闭包与迭代器

闭包是「能捕获环境的匿名函数」,迭代器让你用链式调用优雅地处理集合。两者是 Rust 函数式风格的两张王牌。

闭包

fn main() {
    let factor = 3;
    let mul = |x: i32| x * factor; // 捕获了 factor
    println!("{}", mul(4)); // 12
}

闭包语法 |参数| 体,常能靠类型推导省去标注。它能捕获周围变量(这是和普通函数最大的不同)。

迭代器

Iterator trait 提供 mapfiltercollect 等惰性操作:

fn main() {
    let nums = vec![1, 2, 3, 4, 5];
    let doubled: Vec<i32> = nums
        .iter()
        .filter(|&&x| x % 2 == 0) // 只留偶数
        .map(|&x| x * 2)          // 翻倍
        .collect();               // 收集成 Vec
    println!("{:?}", doubled); // [4, 8]
}

for 循环本质是迭代器

let v = vec![10, 20, 30];
for x in &v {
    println!("{}", x);
}

for 底层就是调用迭代器的 next()

为什么好用

  • 惰性求值:链式调用在 collect 前不真正计算,零成本抽象。
  • 表达力强:一行替代多层循环,意图清晰。
  • 与闭包配合,写出简洁又安全的集合处理。

小结

  • 闭包捕获环境,写法 |x| x + 1
  • 迭代器用 map/filter/collect 链式处理数据。
  • 习惯之后,你会发现很多循环都能被它取代。

➡️ 8. 模块系统与 Cargo