_std::default::Default
_ ドキュメントから:
_#[derive(Default)]
struct SomeOptions {
foo: i32,
bar: f32,
}
fn main() {
let options = SomeOptions { foo: 42, ..Default::default() };
}
_
Default::default()
の戻り値に対して_..
_プレフィックスは何をしているのですか?なぜここで必要なのですか?スプレッド演算子として機能しているように見えますが、よくわかりません。 ..Default::default()
が何をしているのか理解しています-残りの構造体パラメーターにデフォルト値のSomeOptions
を入力しますが、_..
_がどのように機能するかは理解していません。この演算子の名前は何ですか?
これは 構造体更新構文 です。構造体のすべてのメンバーを新しいメンバーに移動/コピーする簡潔な方法が必要なだけで、場合によってはいくつかの小さな変更が必要です。
これを書く「長い」方法は次のようになります。
let a = SomeOptions::default();
let options = SomeOptions { foo: 42, bar: a.bar };
確かにJavaScriptの「spread」演算子に似ていると考えることができますが、Rustの所有権と強い型付けのニュアンスが依然として作用しているため、それほど広く使用されていません。たとえば、この構文を使用して、異なるタイプの値間を移動することはできません。