Result与可恢复错误 #
一、Result 类型 #
1.1 定义 #
rust
enum Result<T, E> {
Ok(T),
Err(E),
}
1.2 使用 #
rust
use std::fs::File;
fn main() {
let f = File::open("hello.txt");
match f {
Ok(file) => println!("文件打开成功"),
Err(error) => println!("打开失败: {}", error),
}
}
二、? 运算符 #
rust
use std::fs::File;
use std::io::{self, Read};
fn read_file() -> io::Result<String> {
let mut file = File::open("hello.txt")?;
let mut content = String::new();
file.read_to_string(&mut content)?;
Ok(content)
}
三、常用方法 #
rust
fn main() {
let result: Result<i32, &str> = Ok(5);
// unwrap: 获取值或panic
println!("{}", result.unwrap());
// expect: 带消息的unwrap
println!("{}", result.expect("应该有值"));
// unwrap_or: 提供默认值
let err: Result<i32, &str> = Err("error");
println!("{}", err.unwrap_or(0));
// map / map_err
let mapped = result.map(|x| x * 2);
println!("{:?}", mapped);
}
四、总结 #
本章学习了:
- Result 类型
- match 处理错误
- ? 运算符
- 常用方法
最后更新:2026-03-27