【笔记】Rust的闭包
前言
Rust的闭包学习笔记
定义闭包
- Rust中的闭包又称作lambda、lambda表达式、内联函数,是一类能够捕获周围作用域的匿名函数
- 闭包可以在没有标注类型的情况下运行
- 闭包没有函数名,但是可以赋值给一个变量,通过变量调用闭包,闭包的返回值也可以赋值给变量
- 闭包无需声明返回值,但是可以有返回值,并且可以使用最后一条语句的结果作为返回值
- 闭包可以移动(move),可以借用(borrow)
- 闭包可以通过
T
、&T
、&mut T
获取值
定义无参数的闭包
1 | let 闭包变量名 = || { |
- 闭包内可以使用闭包外的变量
1 | 闭包外的变量名 = 0; |
定义有参数的闭包
1 | let 闭包变量名 = |参数列表| { |
调用闭包
- 调用闭包和调用函数的方式基本上相同,但是调用闭包时,输入类型和返回值类型两者都可以自动推导,但输入变量名必须指明
调用无参数的闭包
1 | let res = 闭包变量名(); |
调用有参数的闭包
1 | let res = 闭包变量名(参数列表); |
函数参数为闭包
1 | fn 函数名<T>(参数名:T) { |
函数返回值为闭包
1 | fn 函数名() -> impl Fn(闭包参数类型)->闭包返回值类型 { |