From bf638f3fc9bc607277d5e60290ba1f0c1b0b43e4 Mon Sep 17 00:00:00 2001
From: pearzl <302669696@qq.com>
Date: Mon, 19 Feb 2018 22:14:54 +0800
Subject: [PATCH 1/4] Update ch15-05-interior-mutability.md
---
src/ch15-05-interior-mutability.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/ch15-05-interior-mutability.md b/src/ch15-05-interior-mutability.md
index d827cc0..f2ee789 100644
--- a/src/ch15-05-interior-mutability.md
+++ b/src/ch15-05-interior-mutability.md
@@ -139,7 +139,7 @@ impl<'a, T> LimitTracker<'a, T>
示例 15-23:一个记录某个值与最大值差距的库,并根据此值的特定级别发出警告
-这些代码中一个重要部分是拥有一个方法 `send` 的 `Messenger` trait,其获取一个 `self` 的可变引用和文本信息。这是我们的 mock 对象所需要拥有的接口。另一个重要的部分是我们需要测试 `LimitTracker` 的 `set_value` 方法的行为。可以改变传递的 `value` 参数的值,不过 `set_value` 并没有返回任何可供断言的值。也就是说,如果使用某个实现了 `Messenger` trait 的值和特定的 `max` 创建 `LimitTracker`,当传递不同 `value` 值时,消息发送者应被告知发送合适的消息。
+这些代码中一个重要部分是拥有一个方法 `send` 的 `Messenger` trait,其获取一个 `self` 的不可变引用和文本信息。这是我们的 mock 对象所需要拥有的接口。另一个重要的部分是我们需要测试 `LimitTracker` 的 `set_value` 方法的行为。可以改变传递的 `value` 参数的值,不过 `set_value` 并没有返回任何可供断言的值。也就是说,如果使用某个实现了 `Messenger` trait 的值和特定的 `max` 创建 `LimitTracker`,当传递不同 `value` 值时,消息发送者应被告知发送合适的消息。
我们所需的 mock 对象是,调用 `send` 不同于实际发送 email 或短息,其只记录信息被通知要发送了。可以新建一个 mock 对象示例,用其创建 `LimitTracker`,调用 `LimitTracker` 的 `set_value` 方法,然后检查 mock 对象是否有我们期望的消息。示例 15-24 展示了一个如此尝试的 mock 对象实现,不过借用检查器并不允许:
From 164149c269604ecd22ed9c42db5d68c487619bb9 Mon Sep 17 00:00:00 2001
From: rhgb
Date: Thu, 22 Feb 2018 13:38:33 +0800
Subject: [PATCH 2/4] typo
---
src/ch15-02-deref.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/ch15-02-deref.md b/src/ch15-02-deref.md
index 56a27d4..a6d2025 100644
--- a/src/ch15-02-deref.md
+++ b/src/ch15-02-deref.md
@@ -17,7 +17,7 @@ different way in the below paragraph /Carol -->
让我们首先看看 `*` 如何处理引用,接着尝试定义我们自己的类 `Box` 类型并看看为何 `*` 不能像引用一样工作。我们会探索如何实现 `Deref` trait 使得智能指针以类似引用的方式工作变为可能。最后,我们会讨论 Rust 的 **解引用强制多态**(*deref coercions*)功能和它是如何一同处理引用或智能指针的。
-### 通过 `*` 追钟指针的值
+### 通过 `*` 追踪指针的值
From d2d3fd24e3af0f9f4774890b393dd4db594699da Mon Sep 17 00:00:00 2001
From: rhgb
Date: Thu, 22 Feb 2018 13:44:16 +0800
Subject: [PATCH 3/4] Update ch15-02-deref.md
---
src/ch15-02-deref.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/ch15-02-deref.md b/src/ch15-02-deref.md
index a6d2025..5374b40 100644
--- a/src/ch15-02-deref.md
+++ b/src/ch15-02-deref.md
@@ -294,7 +294,7 @@ fn main() {
`(*m)` 将 `MyBox` 解引用为 `String`。接着 `&` 和 `[..]` 获取了整个 `String` 的字符串 slice 来匹配 `hello` 的签名。没有解引用强制多态所有这些符号混在一起将更难以读写和理解。解引用强制多态使得 Rust 自动的帮我们处理这些转换。
-当所涉及到的类型定义了 `Deref` trait,Rust 会分析这些类型并使用任意多次 `Deref::deref` 调用以获得匹配参数的类型。这写解析都发生在编译时,所以利用解引用强制多态并没有运行时惩罚!
+当所涉及到的类型定义了 `Deref` trait,Rust 会分析这些类型并使用任意多次 `Deref::deref` 调用以获得匹配参数的类型。这些解析都发生在编译时,所以利用解引用强制多态并没有运行时惩罚!
### 解引用强制多态如何与可变性交互
From e5da938983bad4fa1c6693bb0fca2a5c0709dcd4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=BB=84=E8=9E=8D?=
Date: Sun, 25 Feb 2018 17:40:20 +0800
Subject: [PATCH 4/4] Update ch14-03-cargo-workspaces.md
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
显示的->显式地
---
src/ch14-03-cargo-workspaces.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/ch14-03-cargo-workspaces.md b/src/ch14-03-cargo-workspaces.md
index b9d1c54..06490b8 100644
--- a/src/ch14-03-cargo-workspaces.md
+++ b/src/ch14-03-cargo-workspaces.md
@@ -104,7 +104,7 @@ pub fn add_one(x: i32) -> i32 {
add-one = { path = "../add-one" }
```
-工作空间中的 crate 不必相互依赖,所以仍需显示的表明工作空间中 crate 的依赖关系。
+工作空间中的 crate 不必相互依赖,所以仍需显式地表明工作空间中 crate 的依赖关系。
接下来,在 `adder` crate 中使用 `add-one` crate 的函数 `add_one`。打开 *adder/src/main.rs* 在顶部增加一行 `extern crate` 将新 `add-one` 库 crate 引入作用域。接着修改 `main` 函数来调用 `add_one` 函数,如示例 14-7 所示:
@@ -324,4 +324,4 @@ test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
现在尝试以类似 `add-one` crate 的方式向工作空间增加 `add-two` crate 来作为更多的练习!
-随着项目增长,考虑使用工作空间:每一个更小的组件比一大块代码要容易理解。将 crate 保持在工作空间中更易于协调他们的改变,如果他们一起运行并经常需要同时被修改的话。
\ No newline at end of file
+随着项目增长,考虑使用工作空间:每一个更小的组件比一大块代码要容易理解。将 crate 保持在工作空间中更易于协调他们的改变,如果他们一起运行并经常需要同时被修改的话。