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>
Clone
Copy for Option<T>
Copy
Debug for Option<T>
Debug
Default for Option<T>
Default
Eq for Option<T>
Eq
Ord for Option<T>
Ord
PartialEq for Option<T>
PartialEq
PartialOrd for Option<T>
PartialOrd
Hash 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 を使うメソッド。

合成分解

xy の合成やその逆操作を行う。

and
両方ともあれば y を取得、他は None を取得。
or
片方でもあれば x 優先で取得、他は None を取得。
xor
片方のみあればそれを取得、他は None を取得。
and_then
and の y が生成関数で渡され、x があればそれを使用。
or_else
or の y が生成関数で渡され、x がないとそれを使用。
zip
二つの Option からペアタプルの Option を合成。
unzip
ペアタプルの Option を二つの Option に分解。

平坦化

入れ子を平坦化する。

flatten
自身の Option の入れ子を一段だけ少なくする。

連携

他の型と連携するメソッド。

結果型 (ResultOption)

Option から Result を生成する。

ok_or
値があれば Ok でラップ、なければ指定値で代替。
ok_or_else
値があれば Ok でラップ、なければ生成関数で代替。
transpose
Option<Result<T, E>> から Result<Option<T>, E> を生成。

反復子を出力 (IteratorOption)

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 の呼出元。

反復子を入力 (OptionIterator)

要素を集めて結果を生成、None が混ざると結果も None になる。

Sum<Option<U>> for Option<T>
総和を生成。
Product<Option<U>> for Option<T>
総積を生成。
FromIterator<Option<A>> for Option<V>
コレクションを生成。

注: FromIteratorIntoIterator は逆操作というわけではない。