Update Ch15

This commit is contained in:
Peng Hailin, 2023-05-12 21:31:20 +08:00
parent 0875516e03
commit 0e60bfdc24

View File

@ -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` 方法。