Option
我们已经了解了 Option<T> 的一些用法。它可以存储“T”类型的值,或者不存储任何值。例如,‘String::find’ 会返回 Option<usize>。
1. fn main() {
2. let name = "Löwe 老虎 Léopard Gepardi";
3. let mut position: Option<usize> = name.find('é');
4. println!("find returned {position:?}");
5. assert_eq!(position.unwrap(), 14);
6. position = name.find('Z');
7. println!("find returned {position:?}");
8. assert_eq!(position.expect("Character not found"), 0);
9. }
This slide should take about 10 minutes.
Optionis widely used, not just in the standard library.unwrap会返回Option或 panic 中的值。expect方法与此类似,但其使用错误消息。- 出现 None 时您或许会恐慌,但不能 “无意中”忘记检查是否为 None 的情况。
- 在草拟阶段的编程中,频繁使用
unwrap/expect进行处理十分常见,但在正式版代码时,通常以更为妥当的方式处理None的情况。 - 小众优化意味着
Option<T>在内存中的大小通常与T相同。
