Rustに慣れてくるにつれて、Result型を使いこなすことで効率的にコードが書くことができそうということがわかってきた。ただ、いろんなメソッドがあり、それぞれOkの場合とErrの場合で挙動が異なるため、表にまとめることにした。
条件分岐
| メソッド |
Okの場合 |
Errの場合 |
and |
引数のResultを返す |
selfを返す |
and_then |
引数のクロージャを実行して結果のResultを返す |
selfを返す |
or |
selfを返す |
引数のResultを返す |
or_else |
selfを返す |
引数のクロージャを実行して結果のResultを返す |
and_thenと似たメソッドとしてmapがある。mapはand_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 |
値を返す |
値の型のデフォルト値を返す |