题外话:标准库默认衔接特质Default
学习内容
- 理解标准库默认衔接特质
Default
篇目
默认衔接特质Default
功能
标准库默认衔接特质Default
也是一个有用的可衍生特质,为类型提供默认值的特质,也就是为类型提供默认的实例化手法。
使用默认衔接特质Default
在使用默认衔接特质Default
的函数default()定义变量时,必须说明变量类型。
#![allow(dead_code)] mod trait_exerci { #[derive(Default, Debug)] pub struct StructType { pub data: u32, } } // cargo run --example trait_default fn main() { let instance: trait_exerci::StructType = Default::default(); println!("{0: <20} = {1}", "instance.data", instance.data); println!("{0: <20} = {1:?}", "instance", instance); }
实现自己默认衔接特质Default
#[derive(Debug)]`` pub struct Person { name: String, age: u32, } impl Default for Person { fn default() -> Person { Person { name: String::from("Leo"), age: 24, } } } fn main() { let instance: Person = Default::default(); println!("{:?}", instance); let mut instance = Person { age: 23, ..Default::default() }; instance.age = 24; println!("{:?}", instance); }