在 Rust 中,#[derive(Default)] 是一个派生宏(derive macro),它允许你为自定义的结构体或枚举自动实现 Default trait。Default trait 提供了一个默认的实例,通常用于初始化结构体或枚举的默认值。Rust 已经为内置的大部分类型实现了 Default
#[derive(Default)]
struct MyStruct {
field1: i32,
field2: String,
field3: Option<bool>,
}
fn main() {
let default_instance = MyStruct::default();
println!("{:?}", default_instance);
}在这个例子中,MyStruct 的所有字段都实现了 Default trait:
i32实现了Default,默认值为0。String实现了Default,默认值为空字符串""。Option<bool>实现了Default,默认值为None。 因此,MyStruct::default()会返回一个MyStruct实例,其中field1为0,field2为空字符串,field3为None。
如果希望为某些字段提供自定义的默认值,你可以手动实现 Default trait,而不是使用 #[derive(Default)]。
struct MyStruct {
field1: i32,
field2: String,
field3: Option<bool>,
}
impl Default for MyStruct {
fn default() -> Self {
MyStruct {
field1: 42,
field2: String::from("Hello, world!"),
field3: Some(true),
}
}
}
fn main() {
let default_instance = MyStruct::default();
println!("{:?}", default_instance);
}