RustのOption<T>型
Option<T>
型
Some(T)
と None
rsenum Option<T> {
None,
Some(T),
}
不在の可能性を示す
値を取り出す方法が場合分けしかないので、Noneであるときの処理をプログラマに強制させることができる
unwrap()
は場合分けを抽象化し、Noneのときはpanicを起こす
機械語レベルではNoneはnull pointerになる
Option型には ?
は使えない
使いたい場合は ok_or
などを使って、Result型に変換してから使う
methods
ok_or<E>(self, err: E)
OptionをResultに変換する
OptionはErrを持っていないので、引数にErrを書いて渡してあげる
and_then(clousre)
Okの中身を取り出して引数のクロージャに渡す
map()に似ており、map()はSomeしか返せないが、これはNoneも返すことができる
ok_or_else()
関数を渡す
参考