3 个版本
0.0.2 | 2019年3月28日 |
---|---|
0.0.1 | 2019年3月27日 |
0.0.0 | 2019年3月26日 |
#4 in #annotated
用于 position
8KB
71 行
oi
oi
提供了一种位置注解的错误类型,以便您可以向用户显示有用的错误信息。
没有位置信息的错误信息通常不可操作,尤其是在它们来自一个具有许多潜在错误来源的复杂程序时。
比较未注解的错误
$ foo
No such file or directory (os error 2)
…与注解错误
$ foo
Configuration.toml: No such file or directory (os error 2)
oi
的名字来源于感叹号,就像在 Oi! Oi! Oi! 中一样。想象一下提醒用户错误的位置:“Oi! 1.2.3.4 不可达!”
用法
此包提供了一种包装错误和位置的 Error
类型,一个用于错误位置的 Location
trait,一个扩展 Result
并带有 err_at
方法的 ErrAt
trait,以及一个作为更繁琐的 Result<T, Error<E, L>>
的别名的 Result<T, E, L>
类型。
pub struct Error<E: Fail, L: Location> {
pub error: E,
pub location: L,
}
pub trait Location: Debug + Send + Sync + 'static {
fn fmt_error(&self, f: &mut Formatter, error: &dyn Fail) -> fmt::Result;
}
pub trait ErrAt<T, E: Fail> {
fn err_at<L: Location, I: Into<L>>(self, location: I) -> Result<T, Error<E, L>>;
}
pub type Result<T, E, L> = std::result::Result<T, Error<E, L>>;
Location
为 PathBuf
和 SocketAddr
实现,并且可以轻松地为自定义位置类型实现。所需的一个方法是 fmt_error
,它允许自定义类型控制错误注解的位置如何被渲染到错误信息中。
依赖项
~64KB