深色模式
结构体和枚举
枚举和结构体的概念不是 Rust 独有的,作用自然差不多。这里简单说一下其在 Rust 中的用法。
结构体
可以参考 C 语言中结构体, 将数据组合在一起。
rust
#[derive(Debug)]
struct IpAddr {
kind: IpAddrKind,
address: String,
}
let mut home1 = IpAddr {
kind: IpAddrKind::V4,
address: String::from("127.0.0.1"),
};
home1.address = String::from("192.168.0.1");
枚举
使用关键字 enum,用法也简单,比如
rust
#[derive(Debug)]
enum IpAddrKind {
V4,
V6,
}
枚举使用,上面的 V4, V6 都是 IpAddrKind 类型
通过上面 IpAddr 结构体的例子,我们可以正常使用枚举。不过,Rust 中枚举好用的地方在于,枚举各种类型中可以携带其他信息。比如
rust
#[derive(Debug)]
enum IpAddr {
V4(String),
V6(String),
}
let home1 = IpAddr::V4(String::from("192.168.0.1"));
let home2 = IpAddr::V6(String::from("::1"));
println!("home1={:?}", home1);
println!("home2={:?}", home2);
另外,参数也可以是结构体等其他类型数据,不止有 String, 可以看到下面例子中 Move 有类似结构体的字段
rust
enum Message {
Quit,
Move { x: i32, y: i32 },
Write(String),
ChangeColor(i32, i32, i32),
}