Default トレイト
Default トレイトは、型のデフォルト値を生成します。
// 著作権 2023 Google LLC // SPDX-License-Identifier: Apache-2.0 #[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(); dbg!(default_struct); let almost_default_struct = Derived { y: "Y is set!".into(), ..Derived::default() }; dbg!(almost_default_struct); let nothing: Option<Derived> = None; dbg!(nothing.unwrap_or_default()); }
- これは直接実装することも、
#[derive(Default)]で導出することもできます。 - 導出された実装は、すべてのフィールドがそれぞれのデフォルト値に設定された値を生成します。
- これは、構造体内のすべての型も
Defaultを実装している必要があることを意味します。
- これは、構造体内のすべての型も
- Rust の標準ライブラリの型の多くは、妥当な値(例:
0、""など)でDefaultを実装しています。 - 構造体の部分初期化は、デフォルト値と組み合わせるとうまく機能します。
- Rust 標準ライブラリは、型が
Defaultを実装できることを考慮しており、それを利用する便利なメソッドを提供しています。 ..構文は 構造体更新構文 と呼ばれます。