Update cell-refcell.md

pull/361/head
Jesse 3 years ago committed by GitHub
parent 2fff3ce6ca
commit 36932c2503
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -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<String>` 包裹一个字符串,同时通过 `Rc` 创建了它的三个所有者:`s`、`s1`和`s2`,并且通过其中一个所有者 `s2` 对字符串内容进行了修改。
上面代码中,我们使用 `RefCell<String>` 包裹一个字符串同时通过 `Rc` 创建了它的三个所有者:`s`、`s1`和`s2`,并且通过其中一个所有者 `s2` 对字符串内容进行了修改。
由于 `Rc` 的所有者们共享同一个底层的数据,因此当一个所有者修改了数据时,会导致全部所有者持有的数据都发生了变化。

Loading…
Cancel
Save