Default
特徵
Default
特徵會產生型別的預設值。
#[derive(Debug, Default)] struct Derived { x: u32, y: String, z: Implemented, } #[derive(Debug)] struct Implemented(String); impl Default for Implemented { fn default() -> Self { Self("John Smith".into()) } } fn main() { let default_struct = Derived::default(); println!("{default_struct:#?}"); let almost_default_struct = Derived { y: "Y is set!".into(), ..Derived::default() }; println!("{almost_default_struct:#?}"); let nothing: Option<Derived> = None; println!("{:#?}", nothing.unwrap_or_default()); }
This slide should take about 5 minutes.
- 這可以直接實作,也可以透過
#[derive(Default)]
衍生得出。 - A derived implementation will produce a value where all fields are set to their default values.
- 也就是說,該結構體中的所有型別也都必須實作
Default
。
- 也就是說,該結構體中的所有型別也都必須實作
- 標準的 Rust 型別通常會以合理的值 (例如
0
、""
等等) 實作Default
。 - The partial struct initialization works nicely with default.
- The Rust standard library is aware that types can implement
Default
and provides convenience methods that use it. - The
..
syntax is called struct update syntax.