Rust unwrap_orを使うべきか unwrap_or_elseを使うべきか

Rustっていいよね。
最近頑張ってrust書くようにしてます。

今日は、Resultの中身を取得する際に、unwrapを使うと思うけど、デフォルト値をいれたい。ってことが多々ある。
そんなときに複数の方法があったので、unwrap_orを使うべきか unwrap_or_elseを使うべきかについて書き溜め。

広告

先に結論

unwrapする対象が関数なら遅延評価される unwrap_or_else , それ以外は unwrap_or。

unwrap_orに渡された引数は、先行評価されます。
関数呼び出しの結果を渡している場合は、遅延評価されるunwrap_or_elseを使用することをお勧めしているみたい。

unwrap_or_defalt は、
unwrap_or と同じなんだけど、Noneの場合、その型のデフォルト値をいれる。

補足

unwrap_orは、

「Returns the contained Some value or a provided default.」

含まれるSome値または提供されたデフォルト値を返すみたい。

一方でunwrap_or_elseは、

「Returns the contained Some value or computes it from a closure.」

含まれるSome値を返すか、クロージャから計算するみたい。

その他、詳細はドキュメント読んでね。



じゃあね〜〜〜。