Option 与空值思维
用 Some/None 替代空指针
本节你将能
正确创建与解包 Option,并选择 map/and_then/unwrap_or 等组合子。
直觉模型
没有 null:要么是 Some(值),要么是 None。编译器逼你回答「没有时怎么办」。
核心要点
unwrap/expect仅用于确信有值或原型阶段- 生产代码优先
unwrap_or、ok_or、?(在返回 Result 的函数中) map变换内部值;and_then用于可能再失败的链式操作
fn first_char(s: &str) -> Option { s.chars().next() }
let c = first_char("hi").unwrap_or('?');
常见误区
到处 unwrap()——等于把空值错误推迟到运行时崩溃。
动手
写函数:从 HashMap 取配置,缺失时返回默认值。
互动
测验:选最合适的 Option API。
本节小结
下一节用 Result 处理「可能失败」而非「可能为空」。