Result型のメソッドをまとめる

#rust

Rustに慣れてくるにつれて、Result型を使いこなすことで効率的にコードが書くことができそうということがわかってきた。ただ、いろんなメソッドがあり、それぞれOkの場合とErrの場合で挙動が異なるため、表にまとめることにした。

条件分岐

メソッド Okの場合 Errの場合
and 引数のResultを返す selfを返す
and_then 引数のクロージャを実行して結果のResultを返す selfを返す
or selfを返す 引数のResultを返す
or_else selfを返す 引数のクロージャを実行して結果のResultを返す
  • and_thenと似たメソッドとしてmapがある。mapand_thenとは違って、引数に渡すクロージャが値を返す。
  • and_thenの引数に渡すクロージャが返すResultはエラーの型Eが元のエラーの型と一致する必要がある。まったく違うResult型を返すことはできないということに注意する。

unwrap

メソッド Okの場合 Errの場合
unwrap 値を返す Errに含まれるメッセージと共にpanicを起こす
expect 値を返す 引数のメッセージと共にpanicを起こす
unwrap_err Okの値を含むメッセージと共にpanicを起こす 値を返す
expect_err 引数のメッセージと共にpanicを起こす 値を返す
unwrap_or 値を返す 引数の値を返す
unwrap_or_else 値を返す 引数のクロージャを実行して結果の値を返す
unwrap_or_default 値を返す 値の型のデフォルト値を返す