【发布时间】:2019-05-26 18:41:07
【问题描述】:
我需要在返回 Result 时将解析错误转换为我自己的错误类型。简化后如下所示:
enum MyError {
Parse,
...,
}
fn process<R: FromStr>(s: &str) -> Result<(), MyError> {
Ok(s.parse::<R>()?)
}
为了使上述工作应该实现 From 特征。这不起作用:
impl From<std::str::FromStr::Err> for MyError {
fn from(e: std::str::FromStr::Err) -> MyError {
MyError::Parse
}
}
编译器诊断:
help: use fully-qualified syntax: `<Type as std::str::FromStr>::Err`
但我不知道这里的确切 Type。重点是允许从所有可能的错误中进行转换。
【问题讨论】:
-
如果不将
MyError设为通用,我认为这是不可能的。FromStr::Err不是具体类型,它是由FromStr的实现指定的类型,这意味着您不能将它当作具体类型来引用。
标签: error-handling rust