その他

【Rust】OptionからResultに変換する

その他
この記事は約1分で読めます。

Option型

Option型は、以下2つをもつEnumです。

  • Some
  • None

値がある/値がない のオプショナルな型として利用します。

また、オプショナル型のような型に対してはmatchを使用した場合わけが使用できます。

matchを使用した場合わけ

fn return_optional() -> Option<&str> {
  // 処理
}

...

match return_optional() {
  Some(v) => {}
  None => return Err(...),
}

Result型に変換する

matchでももちろん問題ありませんが、ok_or()を使用しResult型に変換することで簡潔に記述することが可能です。

fn return_optional() -> Option<&str> {
  // 処理
}

...

let val = return_optional().ok_or(Err)?;
  • Someに入る値はOk
  • Noneに入る値はErr

それぞれ対応しreturnされます。