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 |
値を返す |
値の型のデフォルト値を返す |