🦀

[Rust] Optionのメソッド早見表

2022/03/25に公開
Method Some(5) None 動作
is_some() true false Some か?
unwrap() 5 ! Some なら値
unwrap_unchecked() 5 ! Some なら値。unsafe が必要
expect("失敗") 5 ! Some なら値。エラー文言必須
unwrap_or(999) 5 999 Some なら値で None なら補完
unwrap_or_else(|| 999) 5 999
unwrap_or_default() 5 0
map_or(999, |e| e * 2) 10 999 Some なら {} で None なら指定値
map_or_else(|| 999, |e| e * 2) 10 999 Some なら {} で None なら {}
map(|e| e * 2) Some(10) None Some なら {} を Some で返す
and_then(|e| Some(e * 2)) Some(10) None Some なら {} を Option で返す
and_then::<i32, _>(|_| None) None None Some なら {} を Option で返す
filter(|e| e % 2 == 0) None None Some かつ {} が true なら残す
filter(|e| e % 2 == 1) Some(5) None
ok_or("失敗") Ok(5) Err("失敗") Result 型に変換
ok_or_else(|| "失敗") Ok(5) Err("失敗")
is_none() false true None か?
zip(Some(6)) Some((5, 6)) None Some なら値を追加
and(Some(6)) Some(6) None Some を真として AND
or(Some(6)) Some(5) Some(6) Some を真として OR
xor(Some(6)) None Some(6) Some を真として XOR
insert(6) 6 (元: Some(6)) 6 (元: Some(6)) 破壊的。None でもセット
replace(6) Some(5) (元: Some(6)) None (元: Some(6))
get_or_insert(6) 5 (元: Some(5)) 6 (元: Some(6)) 破壊的。None ならセット
get_or_insert_with(||6) 5 (元: Some(5)) 6 (元: Some(6))
take() Some(5) (元: None) None (元: None) 破壊的。移動して元は None

Discussion