|
|
@ -101,7 +101,7 @@ let loopback = IpAddr::V6(String::from("::1"));
|
|
|
|
|
|
|
|
|
|
|
|
我们直接将数据附加到枚举的每个成员上,这样就不需要一个额外的结构体了。
|
|
|
|
我们直接将数据附加到枚举的每个成员上,这样就不需要一个额外的结构体了。
|
|
|
|
|
|
|
|
|
|
|
|
用枚举替代结构体还有另一个优势:每个成员可以处理不同类型和数量的数据。IPv4 版本的 IP 地址总是含有四个值在 0 和 255 之间的数字部分。如果我们想要将 `V4` 地址存储为四个 `u8` 值而 `V6` 地址仍然表现为一个 `String`,这就不能使用结构体了。枚举则可以轻易处理的这个情况:
|
|
|
|
用枚举替代结构体还有另一个优势:每个成员可以处理不同类型和数量的数据。IPv4 版本的 IP 地址总是含有四个值在 0 和 255 之间的数字部分。如果我们想要将 `V4` 地址存储为四个 `u8` 值而 `V6` 地址仍然表现为一个 `String`,这就不能使用结构体了。枚举则可以轻易的处理这个情况:
|
|
|
|
|
|
|
|
|
|
|
|
```rust
|
|
|
|
```rust
|
|
|
|
enum IpAddr {
|
|
|
|
enum IpAddr {
|
|
|
|