在 Rust 中,default
关键字用于为结构体、枚举和元组生成默认值
struct Person {
name: String,
age: u32,
address: Option<String>,
}
fn main() {
let person = Person {
name: String::from("Alice"),
age: 30,
address: None,
};
let default_person = Person::default();
println!("Person: {:?}", person);
println!("Default Person: {:?}", default_person);
}
在这个例子中,我们定义了一个 Person
结构体,并为每个字段提供了默认值。然后我们创建了一个具有自定义值的 person
实例和一个使用 default
生成的默认值实例 default_person
。
enum Message {
Quit,
Move { x: i32, y: i32 },
Write(String),
ChangeColor(i32, i32, i32),
}
fn main() {
let message = Message::Write(String::from("Hello, world!"));
let default_message = Message::default();
println!("Message: {:?}", message);
println!("Default Message: {:?}", default_message);
}
在这个例子中,我们定义了一个 Message
枚举,并为每个变体提供了默认值。然后我们创建了一个具有自定义值的 message
实例和一个使用 default
生成的默认值实例 default_message
。
fn main() {
let tuple = (1, "two", 3.0);
let default_tuple = (0, "", 0.0);
println!("Tuple: {:?}", tuple);
println!("Default Tuple: {:?}", default_tuple);
}
在这个例子中,我们创建了一个包含不同类型值的元组 tuple
和一个使用 default
生成的默认值元组 default_tuple
。
注意:对于包含可选类型的枚举(例如 Option<T>
),default
会生成 None
。对于其他引用类型(例如 &str
或 &T
),default
会生成 null
(对于指针类型)或 Default::default()
(对于非指针类型)。