Update src/ch15-01-box.md

This commit is contained in:
Aaran Xu 2022-01-23 21:56:56 +08:00
parent 37ca0ecee2
commit 6be90274f0

View File

@ -110,7 +110,7 @@ enum Message {
}
```
当 Rust 需要知道要为 `Message` 值分配多少空间时,它可以检查每一个成员并发现 `Message::Quit` 并不需要任何空间,`Message::Move` 需要足够储存两个 `i32` 值的空间,依此类推。因此,`Message` 值所需的空间等于储存其最大成员的空间大小。
当 Rust 需要知道要为 `Message` 值分配多少空间时,它可以检查每一个成员并发现 `Message::Quit` 并不需要任何空间,`Message::Move` 需要足够储存两个 `i32` 值的空间,依此类推。因为只会使用一个成员,所以 `Message` 值需要的最大空间是存储其最大成员所需的空间大小。
与此相对当 Rust 编译器检查像示例 15-2 中的 `List` 这样的递归类型时会发生什么呢。编译器尝试计算出储存一个 `List` 枚举需要多少内存,并开始检查 `Cons` 成员,那么 `Cons` 需要的空间等于 `i32` 的大小加上 `List` 的大小。为了计算 `List` 需要多少内存,它检查其成员,从 `Cons` 成员开始。`Cons` 成员储存了一个 `i32` 值和一个 `List` 值,这样的计算将无限进行下去,如图 15-1 所示: