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)]で導出することもできます。 - 導出による実装では、すべてのフィールドがデフォルト値に設定された値が生成されます。
- つまり、構造体内のすべての型にも
Defaultを実装する必要があります。
- つまり、構造体内のすべての型にも
- 標準の Rust 型は多くの場合、妥当な値(
0、""など)のDefaultを実装します。 - 部分的な構造体の初期化は、デフォルトで適切に機能します。
- Rust 標準ライブラリは、型が
Defaultを実装できることを認識しており、それを使用するコンビニエンス メソッドを提供しています。 ..構文は、構造体更新記法と呼ばれています。