Rust 学习笔记 18:闭包与迭代器 (Closures & Iterators)
Rust 学习笔记 18:闭包与迭代器 (Closures & Iterators) “Functional programming is like backwards coding, everything is immutable and stateless… wait, Rust allows mutability?” Rust 不仅仅是系统编程语言,它还拥有强大的函数式编程特性。其中最核心的两个就是:闭包和迭代器。 1. 闭包 (Closures) 闭包就是可以捕获其环境的匿名函数。 在 Go 中,我们经常写 func() { variableInOuterScope = 1 }。Rust 的闭包语法有点像 Ruby 的管道符 | |。 1let x = 4; 2let equal_to_x = |z| z == x; // 捕获了 x 3let y = 4; 4assert!(equal_to_x(y)); 类型推断: 闭包不需要像函数那样强制标注参数和返回值类型,编译器会自动推断。 捕获方式: 闭包可以通过三种方式捕获环境,对应三个 Trait: FnOnce:获取捕获变量的所有权(Move)。闭包只能被调用一次。 FnMut:获取可变借用。可以修改环境。 Fn:获取不可变借用。 2. 迭代器 (Iterators) 迭代器模式允许你对一个序列进行遍历。 在 Rust 中,迭代器是惰性 (Lazy) 的。如果你不调用 collect() 或 sum() 等消耗方法,迭代器本身什么都不做。 ...