私のコードには、Option<T>
sを含む構造体がたくさんあります。私は多くの場所でそれらを扱う必要があるので、私のコードにはのような構造体アクセスが散らばっていcar.engine.as_ref().unwrap()
ます。これはコードの可読性にとって苦痛です。
Option<T>
同じことをするタイプにデフォルトの関数はありますか?のようにcar.engine.get()
?もちろん、すべての構造体メンバーに対してアクセサー関数を作成することはできますが、これは非常に基本的なことにはやり過ぎのようです。私はそれを間違っていますか?
マクロについてはよくわかりませんが、マクロで短くする方法はありますか?
?
(Rust 1.22以降)Option<T>
タイプでも機能する演算子を利用できる場合があります(の場合と同様Result<T, E>
)。
struct Foo;
struct Bar {
foo: Option<Foo>,
// other optional fields
}
impl Bar {
fn use_optional_fields(&self) -> Option<&Foo> {
let foo = self.foo.as_ref()?;
// use optional fields
Some(foo)
}
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加