diff --git a/src/advance/smart-pointer/deref.md b/src/advance/smart-pointer/deref.md index 18cbb49807..b885c137b6 100644 --- a/src/advance/smart-pointer/deref.md +++ b/src/advance/smart-pointer/deref.md @@ -76,7 +76,7 @@ fn main() { #### 定义自己的智能指针 -现在,让我们一起来实现一个智能指针,功能上类似 `Box`。由于 `Box` 本身很简单,并没有包含类如长度、最大长度等信息,因此用一个元组结构体即可。 +现在,让我们一起来实现一个智能指针,功能上类似 `Box`。由于 `Box` 本身很简单,并没有包含例如长度、最大长度等信息,因此用一个元组结构体即可。 ```rust struct MyBox(T); @@ -206,7 +206,7 @@ fn main() { } ``` -对于 `s1`,我们通过两次 `Deref` 将 `&str` 类型的值赋给了它(**赋值操作需要手动解引用**);而对于 `s2`,我们在其上直接调用方法 `to_string`,实际上 `MyBox` 根本没有没有实现该方法,能调用 `to_string`,完全是因为编译器对 `MyBox` 应用了 `Deref` 的结果(**方法调用会自动解引用**)。 +对于 `s1`,我们通过两次 `Deref` 将 `&str` 类型的值赋给了它(**赋值操作需要手动解引用**);而对于 `s2`,我们在其上直接调用方法 `to_string`,实际上 `MyBox` 根本没有实现该方法,能调用 `to_string`,完全是因为编译器对 `MyBox` 应用了 `Deref` 的结果(**方法调用会自动解引用**)。 ## Deref 规则总结 diff --git a/src/advance/smart-pointer/rc-arc.md b/src/advance/smart-pointer/rc-arc.md index e0265f8f44..7220a9dedf 100644 --- a/src/advance/smart-pointer/rc-arc.md +++ b/src/advance/smart-pointer/rc-arc.md @@ -171,7 +171,7 @@ fn main() { error[E0277]: `Rc` cannot be sent between threads safely ``` -表面原因是 `Rc` 不能在线程间安全的传递,实际上是因为它没有实现 `Send` 特征,而该特征是恰恰是多线程间传递数据的关键,我们会在多线程章节中进行讲解。 +表面原因是 `Rc` 不能在线程间安全的传递,实际上是因为它没有实现 `Send` 特征,而该特征恰恰是多线程间传递数据的关键,我们会在多线程章节中进行讲解。 当然,还有更深层的原因:由于 `Rc` 需要管理引用计数,但是该计数器并没有使用任何并发原语,因此无法实现原子化的计数操作,最终会导致计数错误。