首先,让我们看一下IpAddr
枚举的定义:
enum IpAddrKind {
V4,
V6,
}
struct IpAddr {
kind: IpAddrKind,
address: String,
}
在这里,我们定义了一个名为IpAddrKind
的枚举,它有两个变体(variants):V4
和V6
,分别表示IPv4和IPv6。然后,我们定义了一个包含IpAddrKind
和一个String
类型地址的结构体IpAddr
。
接下来,我们在main
函数中使用这个枚举:
fn main() {
let four = IpAddrKind::V4;
let six = IpAddrKind::V6;
route(four);
route(six);
route(IpAddrKind::V4);
let home = IpAddr {
kind: IpAddrKind::V4,
address: String::from("127.0.0.1"),
};
let loopback = IpAddr {
kind: IpAddrKind::V6,
address: String::from("::1"),
};
}
我们创建了four
和six
,分别为IPv4和IPv6的IpAddrKind
枚举变体。然后,我们调用route
函数来展示如何使用枚举作为参数。最后,我们创建了两个IpAddr
实例,分别表示本地主机和回环地址。