|
|
@ -134,7 +134,7 @@ let add_one_v4 = |x| x + 1 ;
|
|
|
|
|
|
|
|
|
|
|
|
### 将捕获的值移出闭包和 `Fn` trait
|
|
|
|
### 将捕获的值移出闭包和 `Fn` trait
|
|
|
|
|
|
|
|
|
|
|
|
一旦闭包捕获了定义它的环境中的某个值的引用或所有权(也就影响了什么会被移进闭包,如有),闭包体中的代码则决定了在稍后执行闭包时,这些引用或值将如何处理(也就影响了什么会被移出闭包,如有)。闭包体可以执行以下任一操作:将一个捕获的值移出闭包,修改捕获的值,既不移动也不修改值,或者一开始就不从环境中捕获任何值。
|
|
|
|
一旦闭包捕获了定义它的环境中的某个值的引用或所有权(也就影响了什么会被移**进**闭包,如有),闭包体中的代码则决定了在稍后执行闭包时,这些引用或值将如何处理(也就影响了什么会被移**出**闭包,如有)。闭包体可以执行以下任一操作:将一个捕获的值移出闭包,修改捕获的值,既不移动也不修改值,或者一开始就不从环境中捕获任何值。
|
|
|
|
|
|
|
|
|
|
|
|
闭包捕获和处理环境中的值的方式会影响闭包实现哪些 trait,而 trait 是函数和结构体指定它们可以使用哪些类型闭包的方式。根据闭包体如何处理这些值,闭包会自动、渐进地实现一个、两个或全部三个 `Fn` trait。
|
|
|
|
闭包捕获和处理环境中的值的方式会影响闭包实现哪些 trait,而 trait 是函数和结构体指定它们可以使用哪些类型闭包的方式。根据闭包体如何处理这些值,闭包会自动、渐进地实现一个、两个或全部三个 `Fn` trait。
|
|
|
|
|
|
|
|
|
|
|
|