在学习Rust时,我使用thiserror
来 Package 一些异常。
这是我想从unrar
Package 箱中 Package 的异常:
#[derive(PartialEq)]
pub struct UnrarError<T> {
pub code: Code,
pub when: When,
pub data: Option<T>,
}
我自己的代码是这样的:
#[derive(Debug, Error)]
pub enum MyError {
#[error(transparent)]
Io(#[from] io::Error),
#[error(transparent)]
Unrar(#[from] unrar::error::UnrarError), // <-- missing generics
#[error("directory already exists")]
DirectoryExists,
}
编译器抱怨UnrarError
上缺少泛型类型参数。
因此,我可以添加一个类型参数:
#[derive(Debug, Error)]
pub enum MyError<T> {
#[error(transparent)]
Io(#[from] io::Error),
#[error(transparent)]
Unrar(#[from] unrar::error::UnrarError<T>),
#[error("directory already exists")]
DirectoryExists,
}
但是如果我这样做了,现在我所有使用MyError的代码都需要关心这个类型参数,实际上它都不关心这个参数。
我应该如何习惯性地处理这种情况?
1条答案
按热度按时间az31mfrm1#
我建议你使用特定的类型或者添加你自己的变体。
UnrarError
被设计成泛型的,而不是泛型的。请尝试以下操作:
或者在这种情况下我更喜欢怎么做: