Rust 中 Result 类型的全面解析与应用
1. Result 类型概述
Result 类型与 Option 类型类似,但它有一个额外的优势,即能够存储任意错误值,并提供更多关于错误的上下文信息,而不仅仅是 None。当我们希望用户了解操作失败的原因时,Result 类型就非常适用。其类型签名如下:
enum Result<T, E> {
Ok(T),
Err(E),
}
它有两个泛型变体:
- Ok(T)
:用于表示操作成功的状态,可以放入任意类型的值 T。
- Err(E)
:用于表示操作失败的状态,可以放入任意类型的错误值 E。
创建 Result 值的示例代码如下:
// create_result.rs
fn main() {
let my_result = Ok(64);
let my_err = Err("oh no!");
}
然而,这段代码无法编译,因为 Result 有两个泛型变体,而我们只为 my_result
的 Ok
变体指定了具体类型,编译器不知道 E 的具体类型。对于 my_err
也是同样的问题。我们需要为两者都指定具体类型,修正后的代码如下:
/