Option<T>
在正确时得到 Some<T>
,错误时得到 None
。即接口的作者不准备发布错误的类型也细节,所以适用与错误十分简单和单一的情况。
Result<T, E>
正确得到 Ok<T>
,错误得到 Err<E>
。即可以返回错误细节,也可以根据不同的错误类型,返回不同种类的错误。适用于大多数错误处理场景。
一个库的设计者,往往会把自己的库中的错误统一成某种类型。例如所有 io
库的错误,都是 io::Error
。这时库的接口就倾向于提供一个类型简化。
type Result<T> = Result<T, Error>;
在调用某个库的函数时,处理结果返回到此类的 Result
是一种常见的做法。
网友评论