mirror of
https://github.com/gnu4cn/rust-lang-zh_CN.git
synced 2024-12-27 13:21:09 +08:00
Update Ch15
This commit is contained in:
parent
0875516e03
commit
0e60bfdc24
@ -1042,7 +1042,8 @@ Rust 的内存安全保证,使得意外创建出从未清理过的内存(称
|
|||||||
|
|
||||||
**Creaing a Reference Cycle**
|
**Creaing a Reference Cycle**
|
||||||
|
|
||||||
下面以清单 15-25 中的 `List` 枚举及一个 `tail` 方法开始,来看看循环引用会怎样发生,以及怎样防止循环引用:
|
|
||||||
|
咱们以清单 15-25 中的 `List` 枚举和 `tail` 方法开始,来看看循环引用是如何发生的,以及怎样防止他:
|
||||||
|
|
||||||
|
|
||||||
文件名:`src/main.rs`
|
文件名:`src/main.rs`
|
||||||
@ -1070,7 +1071,7 @@ impl List {
|
|||||||
fn main() {}
|
fn main() {}
|
||||||
```
|
```
|
||||||
|
|
||||||
*清单 15-25:保存着一个 `RefCell<T>`,从而可修改 `Cons` 变种指向何处的一个构造列表定义*
|
*清单 15-25:包含 `RefCell<T>` 的构造列表定义,因此我们可以修改 `Cons` 变种指向的内容*
|
||||||
|
|
||||||
这里用的是清单 15-5 中那个 `List` 定义的另一变体。`Cons` 变种中的第二个元素,现在是 `RefCell<Rc<List>>`,表示这里不是要如同在清单 15-24 中所做的那样,具备修改那个 `i32` 值的能力,这里是要修改某个 `Cons` 变种所指向的那个 `List` 值。这里还添加了在有着某个 `Cons` 变种时,实现便于访问其第二个项目的 `tail` 方法。
|
这里用的是清单 15-5 中那个 `List` 定义的另一变体。`Cons` 变种中的第二个元素,现在是 `RefCell<Rc<List>>`,表示这里不是要如同在清单 15-24 中所做的那样,具备修改那个 `i32` 值的能力,这里是要修改某个 `Cons` 变种所指向的那个 `List` 值。这里还添加了在有着某个 `Cons` 变种时,实现便于访问其第二个项目的 `tail` 方法。
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user