【发布时间】:2015-02-08 11:25:25
【问题描述】:
我正在用 Rust 编写一个库,并且希望 API 只公开我自己的错误类型,以及由内部使用的库导致的任何错误都包含在该类型中。我想实现 Error 特征并将原始错误公开为“原因”。我可以通过执行以下操作来使用枚举:
enum MyErrorCause {
Zip(ZipError),
Io(IoError),
None
}
pub struct MyError {
cause: MyErrorCause
}
impl Error for MyError {
fn description(&self) -> &str { "an error" }
fn cause(&self) -> Option<&Error> {
match self.cause {
MyErrorCause::Zip(ref err) => Some(err as &Error),
MyErrorCause::Io(ref err) => Some(err as &Error),
MyErrorCause::None => None
}
}
}
问题是我必须为每种原因类型添加一个枚举变体和几乎相同的匹配臂,而我只是将它们作为通用 Error 引用公开给用户。是否可以将原因作为Error 存储在MyError 结构中?我仍然希望事业归MyError所有。
【问题讨论】:
标签: rust