Update Ch13

This commit is contained in:
Peng Hailin, 2023-04-26 20:48:19 +08:00
parent e163290f25
commit 9382a25ff9

View File

@ -281,7 +281,7 @@ fn main() {
咱们生成了一个新线程给到线程一个闭包作为参数来运行we spawn a new thread, giving the thread a closure to run as an argument。闭包的主体体会打印出清单。在代码清单 13-4 中,由于不可变引用是打印 `list` 所需的最低权限,因此闭包仅使用了不可变引用捕获 `list`。在这个示例中,即使闭包主体只需不可变引用,咱们仍需通过把 `move` 关键字放在闭包定义的开头,而指明 `list` 应被迁移到闭包中。新线程可能在主线程其余部分执行完毕前执行结束,也有可能主线程先结束。若主线程依然保有 `list` 的所有权,而主线程又在新线程结束之前就结束而弃用掉 `list`,那么新线程中的 `list` 就会成为无效。因此,编译器要求 `list` 要迁移到给新线程的闭包中,如此那个引用将有效。请尝试去掉 `move` 关键字,或在闭包被定义出后使用 `list`,来看看会得到什么样的编译器报错!
### 将捕获到的值迁出闭包与 `Fn` 特质
### 将捕获值迁出闭包与 `Fn` 特质
**Moving Captured Values Out of Closures and the `Fn` Traits**