Result
Result
是 Option
类型的更丰富的版本,它描述了可能的错误而不是可能的缺失。
也就是说,Result<T, E>
可能有两个结果:
Ok(T)
:找到了元素T
Err(E)
:找到了错误,错误元素为E
按照惯例,预期的结果是 Ok
,而意外的结果是 Err
。
像 Option
一样,Result
也有许多与之相关的方法。例如,unwrap()
要么返回元素 T
,要么 panic
。对于情况处理,Result
和 Option
之间有许多重叠的组合器。
在使用 Rust 时,您可能会遇到返回 Result
类型的方法,例如 parse()
方法。将字符串解析为其他类型可能并非总是可行,因此 parse()
会返回一个 Result
,指示可能失败。
让我们看看成功和不成功地 parse()
字符串时会发生什么
在不成功的情况下,parse()
会留下一个错误,让 unwrap()
进行 panic
。此外,panic
会退出我们的程序并提供令人不快的错误消息。
为了提高错误消息的质量,我们应该更具体地说明返回类型,并考虑显式地处理错误。
在 main
中使用 Result
如果明确指定,Result
类型也可以是 main
函数的返回类型。通常,main
函数的形式如下:
fn main() {
println!("Hello World!");
}
但是,main
也可以具有 Result
的返回类型。如果在 main
函数中发生错误,它将返回一个错误代码并打印该错误的调试表示形式(使用 Debug
trait)。以下示例显示了这种情况,并涉及了 以下部分中涵盖的方面。