Option<T>は値があるかないかを表現する為の型です。ある場合はSome<T>、ない場合はNoneになります。
let option_thirty_three = Some(33);
let none = None as Option; Optionな値は基本中身を取り出してから使います。そのⅠつが::unwrapです。これは値がSome<T>の時Tを取り出してくれます。
assert_eq!(Some(33).unwrap(), 33);ただし、これは値が入ってるので大丈夫ですがNoneに対して呼んでしまうと Panic を起こしてしまいます。
assert_eq!((None as Option).unwrap(), 33);
// thread 'main' panicked at 'called `Option::unwrap()`
// on a `None` value' Noneの時はデフォルト値を返したいなどの場合は、::unwrap_orを使います。
assert_eq!((None as Option).unwrap_or(66), 66); もしくは Panic のままエラー文章だけ分かりやすくしたい場合は、::expectを使います。
assert_eq!((None as Option).expect("a value isn't equal 33"), 33);
// thread 'main' panicked at 'a value isn't equal 33' 値の加工
Optionのまま値を更新できるのが::mapです。
assert_eq!(
Some(33).map(|mut thirty_three| {
thirty_three += 1;
thirty_three
}),
Some(34)
);