闭包(Closure)通常是指词法闭包,是一个持有外部环境变量的函数。外部环境是指闭包定义时所在的词法作用域。外部环境变量,在函数式编程范式中也被称为*变量,是指并不是在闭包内定义的变量。将*变量和自身绑定的函数就是闭包。
闭包的两大特性:
- 延迟执行。返回的闭包只有在需要调用的时候才会执行。
- 捕获环境变量。闭包会获取其定义时所在作用域中的*变量,以供之后调用时使用。
Rust的闭包语法形式参考了Ruby语言的lambda表达式:
fn main(){
let add_op = |a:i32,b:i32| -> i32 {a+b};
let c = add_op(1,2);
println!("1+2={}",c);
}
闭包的语法都大差不差,rust,ruby,python等都差不多一个样,
rust闭包的具体实现方式可以看Rust编程之道里面有讲解,目前没用到闭包,这里就不做讲解了,看了不用也记不住。