From 9382a25ff9de3699514199ed318133d554d48157 Mon Sep 17 00:00:00 2001 From: "Peng Hailin," Date: Wed, 26 Apr 2023 20:48:19 +0800 Subject: [PATCH] Update Ch13 --- src/Ch13_Functional_Language_Features_Iterators_and_Closures.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Ch13_Functional_Language_Features_Iterators_and_Closures.md b/src/Ch13_Functional_Language_Features_Iterators_and_Closures.md index a27abce..cfe3b7f 100644 --- a/src/Ch13_Functional_Language_Features_Iterators_and_Closures.md +++ b/src/Ch13_Functional_Language_Features_Iterators_and_Closures.md @@ -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**