1. 初识Option与Result:Rust的安全防护网
第一次接触Rust时,我被Option和Result这两个概念彻底搞懵了。它们就像两个严格的安检员,每次我想从函数里取出值,都得经过它们的检查。后来我才明白,这正是Rust防止空指针异常的独门秘籍。
想象你去快递柜取包裹,现实中有三种可能:
- 柜子里有你的包裹(Some)
- 柜子是空的(None)
- 取件时系统故障了(Err)
传统语言用null表示"没有",就像快递柜可能藏着隐形炸弹(NullPointerException)。而Rust用Option和Result明确告诉你:
enum Option<T> {
Some(T),
None,
}
enum Result<T, E> {
Ok(T),
Err(E),
}
最近在写HTTP接口时,我遇到个典型场景:解析用户输入的页码参数。用Option处理可选参数特别顺手:
fn parse_page(page_str: Option<&str>) -> usize {
page_str
.and_then(|s| s.parse().ok())
.unwrap_or(1) // 默认第一页
}
2. 模式匹配:错误处理的瑞士军刀
模式匹配是解包Option/Result最直观的方式。有次我写文件处理逻辑时,发现match就像个多功能工具钳,能同时处理成功和错误路径:
fn read_config() -> Result<Config, io::Error> {
let mut file = match File::open("config.toml") {

640

被折叠的 条评论
为什么被折叠?



