Трейт 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 встановлено!".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)]
. - Похідна реалізація створить значення, в якому всі поля мають значення за замовчуванням.
- Це означає, що всі типи в структурі також мають реалізовувати
Default
.
- Це означає, що всі типи в структурі також мають реалізовувати
- Стандартні типи Rust часто реалізують
Default
із прийнятними значеннями (наприклад,0
,""
тощо). - Часткова ініціалізація структур чудово працює за замовчуванням.
- Стандартна бібліотека Rust усвідомлює, що типи можуть реалізовувати
Default
і надає зручні методи, які його використовують. - Синтаксис
..
називається синтаксис оновлення структури.