Result型のメソッドをまとめる
2019-01-25#rust
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 | 値を返す | 値の型のデフォルト値を返す |