From ba961370a74acc538d677f59c77020808035718a Mon Sep 17 00:00:00 2001 From: LiuYinCarl Date: Fri, 27 Aug 2021 00:08:24 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=B9=E7=85=A7=E8=8B=B1=E6=96=87=E5=8E=9F?= =?UTF-8?q?=E6=96=87=EF=BC=8C=E4=BF=AE=E6=94=B9=E8=AE=A1=E7=AE=97=20enum?= =?UTF-8?q?=20=E5=8D=A0=E7=94=A8=E5=86=85=E5=AD=98=E5=A4=A7=E5=B0=8F?= =?UTF-8?q?=E7=9A=84=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ch15-01-box.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ch15-01-box.md b/src/ch15-01-box.md index 8737cd5..7b6e9a7 100644 --- a/src/ch15-01-box.md +++ b/src/ch15-01-box.md @@ -113,7 +113,7 @@ enum Message { } ``` -当 Rust 需要知道要为 `Message` 值分配多少空间时,它可以检查每一个成员并发现 `Message::Quit` 并不需要任何空间,`Message::Move` 需要足够储存两个 `i32` 值的空间,依此类推。因此,`Message` 值所需的空间等于储存其最大成员的空间大小。 +当 Rust 需要知道要为 `Message` 值分配多少空间时,它可以检查每一个成员并发现 `Message::Quit` 并不需要任何空间,`Message::Move` 需要足够储存两个 `i32` 值的空间,依此类推。因为 enum 实际上只会使用其中的一个成员,所以 `Message` 值所需的空间等于储存其最大成员的空间大小。 与此相对当 Rust 编译器检查像示例 15-2 中的 `List` 这样的递归类型时会发生什么呢。编译器尝试计算出储存一个 `List` 枚举需要多少内存,并开始检查 `Cons` 成员,那么 `Cons` 需要的空间等于 `i32` 的大小加上 `List` 的大小。为了计算 `List` 需要多少内存,它检查其成员,从 `Cons` 成员开始。`Cons`成员储存了一个 `i32` 值和一个`List`值,这样的计算将无限进行下去,如图 15-1 所示: