From 53b4bfeb3133f1da3113f4eff4fe68469c787fc2 Mon Sep 17 00:00:00 2001
From: Kunhao ZHENG <39208702+DyeKuu@users.noreply.github.com>
Date: Thu, 4 Jun 2020 17:21:36 +0200
Subject: [PATCH 1/5] fix: typo
---
src/ch17-02-trait-objects.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/ch17-02-trait-objects.md b/src/ch17-02-trait-objects.md
index 4daec57..29c4863 100644
--- a/src/ch17-02-trait-objects.md
+++ b/src/ch17-02-trait-objects.md
@@ -30,7 +30,7 @@ pub trait Draw {
示例 17-3:`Draw` trait 的定义
-因为第十章已经讨论过如何定义 trait,其语法看起来应该比较眼熟。接下来就是新内容了:实例 17-4 定义了一个存放了名叫 `components` 的 vector 的结构体 `Screen`。这个 vector 的类型是 `Box`,此为一个 trait 对象:它是 `Box` 中任何实现了 `Draw` trait 的类型的替身。
+因为第十章已经讨论过如何定义 trait,其语法看起来应该比较眼熟。接下来就是新内容了:示例 17-4 定义了一个存放了名叫 `components` 的 vector 的结构体 `Screen`。这个 vector 的类型是 `Box`,此为一个 trait 对象:它是 `Box` 中任何实现了 `Draw` trait 的类型的替身。
文件名: src/lib.rs
From 82dad270deb4ba7e7f73730edf1d792e42ce7d9d Mon Sep 17 00:00:00 2001
From: Kunhao ZHENG <39208702+DyeKuu@users.noreply.github.com>
Date: Thu, 4 Jun 2020 17:22:51 +0200
Subject: [PATCH 2/5] fix: expr
---
src/ch16-01-threads.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/ch16-01-threads.md b/src/ch16-01-threads.md
index 759a814..e75971b 100644
--- a/src/ch16-01-threads.md
+++ b/src/ch16-01-threads.md
@@ -283,6 +283,6 @@ error[E0382]: use of moved value: `v`
not implement the `Copy` trait
```
-Rust 的所有权规则又一次帮助了我们!示例 16-3 中的错误是因为 Rust 是保守的并只会为线程借用 `v`,这意味着主线程理论上可能使新建线程的引用无效。通过告诉 Rust 将 `v` 的所有权移动到新建线程,我们向 Rust 保证主线程不会再使用 `v`。如果对示例 16-4 也做出如此修改,那么当在主线程中使用 `v` 时就会违反所有权规则。 `move` 关键字覆盖了 Rust 默认保守的借用:其也不允许我们违反所有权规则。
+Rust 的所有权规则又一次帮助了我们!示例 16-3 中的错误是因为 Rust 是保守的并只会为线程借用 `v`,这意味着主线程理论上可能使新建线程的引用无效。通过告诉 Rust 将 `v` 的所有权移动到新建线程,我们向 Rust 保证主线程不会再使用 `v`。如果对示例 16-4 也做出如此修改,那么当在主线程中使用 `v` 时就会违反所有权规则。 `move` 关键字覆盖了 Rust 默认保守的借用:它不允许我们违反所有权规则。
现在我们对线程和线程 API 有了基本的了解,让我们讨论一下使用线程实际可以 **做** 什么吧。
From 7b97012a7fa33080ec4a2d0d9a7f8c8824ca5bcd Mon Sep 17 00:00:00 2001
From: Kunhao ZHENG <39208702+DyeKuu@users.noreply.github.com>
Date: Thu, 4 Jun 2020 17:26:13 +0200
Subject: [PATCH 3/5] fix: delete faux translation
---
src/ch12-03-improving-error-handling-and-modularity.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/ch12-03-improving-error-handling-and-modularity.md b/src/ch12-03-improving-error-handling-and-modularity.md
index 2fcc9cd..e27f558 100644
--- a/src/ch12-03-improving-error-handling-and-modularity.md
+++ b/src/ch12-03-improving-error-handling-and-modularity.md
@@ -436,7 +436,7 @@ fn main() {
示例 12-14:将 `minigrep` crate 引入 *src/main.rs* 的作用域中
-为了将库 crate 引入二进制 crate,我们使用了 `use minigrep`。接着 `use minigrep::Config` 将 `Config` 类型引入作用域,并使用 crate 名称作为 `run` 函数的前缀。通过这些重构,所有功能应该能够联系在一起并运行了。运行 `cargo run` 来确保一切都正确的衔接在一起。
+我们添加了一行 `use minigrep::Config`,它将 `Config` 类型引入作用域,并使用 crate 名称作为 `run` 函数的前缀。通过这些重构,所有功能应该能够联系在一起并运行了。运行 `cargo run` 来确保一切都正确的衔接在一起。
哇哦!这可有很多的工作,不过我们为将来的成功打下了基础。现在处理错误将更容易,同时代码也更加模块化。从现在开始几乎所有的工作都将在 *src/lib.rs* 中进行。
From bcde0615fd33a1a242ecd5743537a80f13fd0d1c Mon Sep 17 00:00:00 2001
From: Kunhao ZHENG <39208702+DyeKuu@users.noreply.github.com>
Date: Thu, 4 Jun 2020 17:33:29 +0200
Subject: [PATCH 4/5] fix: url redirect
---
src/ch15-04-rc.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/ch15-04-rc.md b/src/ch15-04-rc.md
index dd6d1f3..9306c51 100644
--- a/src/ch15-04-rc.md
+++ b/src/ch15-04-rc.md
@@ -140,4 +140,4 @@ count after c goes out of scope = 2
通过不可变引用, `Rc` 允许在程序的多个部分之间只读地共享数据。如果 `Rc` 也允许多个可变引用,则会违反第四章讨论的借用规则之一:相同位置的多个可变借用可能造成数据竞争和不一致。不过可以修改数据是非常有用的!在下一部分,我们将讨论内部可变性模式和 `RefCell` 类型,它可以与 `Rc` 结合使用来处理不可变性的限制。
-[preventing-ref-cycles]: ch15-06-reference-cycles.html#preventing-reference-cycles-turning-an-rct-into-a-weakt
+[preventing-ref-cycles]: ch15-06-reference-cycles.html#避免引用循环将-rct-变为-weakt
From 87a9fbc8505e5faa5da4925d92845719e58b83b9 Mon Sep 17 00:00:00 2001
From: DyeKuu
Date: Thu, 4 Jun 2020 18:05:08 +0200
Subject: [PATCH 5/5] fix: url
---
src/ch15-04-rc.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/ch15-04-rc.md b/src/ch15-04-rc.md
index 9306c51..38fa51a 100644
--- a/src/ch15-04-rc.md
+++ b/src/ch15-04-rc.md
@@ -123,7 +123,7 @@ fn main() {
示例 15-19:打印出引用计数
-在程序中每个引用计数变化的点,会打印出引用计数,其值可以通过调用 `Rc::strong_count` 函数获得。这个函数叫做 `strong_count` 而不是 `count` 是因为 `Rc` 也有 `weak_count`;在 [“避免引用循环:将 `Rc` 变为 `Weak`”](preventing-ref-cycles) 部分会讲解 `weak_count` 的用途。
+在程序中每个引用计数变化的点,会打印出引用计数,其值可以通过调用 `Rc::strong_count` 函数获得。这个函数叫做 `strong_count` 而不是 `count` 是因为 `Rc` 也有 `weak_count`;在 [“避免引用循环:将 `Rc` 变为 `Weak`”](ch15-06-reference-cycles.html#preventing-reference-cycles-turning-an-rct-into-a-weakt) 部分会讲解 `weak_count` 的用途。
这段代码会打印出:
@@ -140,4 +140,4 @@ count after c goes out of scope = 2
通过不可变引用, `Rc` 允许在程序的多个部分之间只读地共享数据。如果 `Rc` 也允许多个可变引用,则会违反第四章讨论的借用规则之一:相同位置的多个可变借用可能造成数据竞争和不一致。不过可以修改数据是非常有用的!在下一部分,我们将讨论内部可变性模式和 `RefCell` 类型,它可以与 `Rc` 结合使用来处理不可变性的限制。
-[preventing-ref-cycles]: ch15-06-reference-cycles.html#避免引用循环将-rct-变为-weakt
+[preventing-ref-cycles]: ch15-06-reference-cycles.html#preventing-reference-cycles-turning-an-rct-into-a-weakt