diff --git a/book/contents/advance/smart-pointer/cell-refcell.md b/book/contents/advance/smart-pointer/cell-refcell.md index 9cbc1d70..8dfbe4a3 100644 --- a/book/contents/advance/smart-pointer/cell-refcell.md +++ b/book/contents/advance/smart-pointer/cell-refcell.md @@ -72,7 +72,7 @@ note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace #### RefCell 为何存在 相信肯定有读者有疑问了,这么做有任何意义吗?还不如在编译期报错,至少能提前发现问题,而且性能还更好。 -存在即合理,究其根因,在于 Rust 编译期的**宁可错杀,绝不放过**的原则, 当编译器不能确定你的代码是否正确时,就统统会判定为错误,因此难免会导致一些误报。 +存在即合理,究其根因,在于 Rust 编译期的**宁可错杀,绝不放过**的原则,当编译器不能确定你的代码是否正确时,就统统会判定为错误,因此难免会导致一些误报。 而 `RefCell` 正是**用于你确信代码是正确的,而编译器却发生了误判时**。 @@ -214,7 +214,7 @@ fn main() { ``` -上面代码中,我们使用 `RefCell` 包裹一个字符串,同时通过 `Rc` 创建了它的三个所有者:`s`、`s1`和`s2`,并且通过其中一个所有者 `s2` 对字符串内容进行了修改。 +上面代码中,我们使用 `RefCell` 包裹一个字符串,同时通过 `Rc` 创建了它的三个所有者:`s`、`s1`和`s2`,并且通过其中一个所有者 `s2` 对字符串内容进行了修改。 由于 `Rc` 的所有者们共享同一个底层的数据,因此当一个所有者修改了数据时,会导致全部所有者持有的数据都发生了变化。