Option が実装するトレイトやメソッドは大量にある。
忘れた頃にいつも探しているので用途別にまとめた。
(まとめていないものもあるので要注意!)
主に一つの Option のみが関わるメソッド。
対象の Option が条件を満たすかを判定する。
is_some is_none is_some_and is_none_or
元の Option の写像となる値を取得する。
expect unwrap のパニックメッセージ指定版。unwrap unwrap_or unwrap_or_default unwrap_or_else unwrap_unchecked map None で代替。map_or map_or_else Option<&T>::cloned None で代替。Option<&T>::copied None で代替。Option<&mut T>::cloned None で代替。Option<&mut T>::copied None で代替。filter None で代替。
Option への参照から、参照を保持する Option を生成する。
as_ref &Option<T> から Option<&T> を生成。as_mut &mut Option<T> から Option<&mut T> を生成。as_deref &Option<T> から Option<&T::Target> を生成。as_deref_mut &mut Option<T> から Option<&mut T::Target> を生成。as_pin_ref Pin<&Option<T>> から Option<Pin<&T>> を生成。as_pin_mut Pin<&mut Option<T>> から Option<Pin<&mut T>> を生成。From<&'a Option<T>> for Option<&'a T> as_ref の呼出元。From<&'a mut Option<T>> for Option<&'a mut T> as_mut の呼出元。
T がトレイトを実装していれば、Option<T> にもそれを引き継げるものが多い。
Clone for Option<T> CloneCopy for Option<T> CopyDebug for Option<T> DebugDefault for Option<T> DefaultEq for Option<T> EqOrd for Option<T> OrdPartialEq for Option<T> PartialEqPartialOrd for Option<T> PartialOrdHash for Option<T> Hash
Option の値を変更する。
insert get_or_insert get_or_insert_default get_or_insert_with take None で代替。take_if None で代替。replace
Option の外への副作用を意図した処理を実行する。
inspect
二つの Option を使うメソッド。
x と y の合成やその逆操作を行う。
and None を取得。or None を取得。xor None を取得。and_then and の y が生成関数で渡され、x があればそれを使用。or_else or の y が生成関数で渡され、x がないとそれを使用。zip Option からペアタプルの Option を合成。unzip Option を二つの Option に分解。入れ子を平坦化する。
flatten Option の入れ子を一段だけ少なくする。他の型と連携するメソッド。
Option から Result を生成する。
ok_or Ok でラップ、なければ指定値で代替。ok_or_else Ok でラップ、なければ生成関数で代替。transpose Option<Result<T, E>> から Result<Option<T>, E> を生成。
None なら 0 個、Some なら 1 個の並びを生成する[1]。
as_slice as_mut_slice iter iter_mut IntoIterator for Option<T> IntoIterator for &'a Option<T> iter の呼出元。IntoIterator for &'a mut Option<T> iter_mut の呼出元。
要素を集めて結果を生成、None が混ざると結果も None になる。
Sum<Option<U>> for Option<T> Product<Option<U>> for Option<T> FromIterator<Option<A>> for Option<V>
注: FromIterator と IntoIterator は逆操作というわけではない。