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