使用试试时!宏,它使用From trait将错误转换为所需的错误。
我想将一些错误转换为我自己的类型。这对于例如io ::错误,但我不能让它从核心的错误类型中工作。
use std::io;
pub struct ParserError {
pub message: String,
}
impl From<io::Error> for ParserError {
fn from(e: io::Error) -> ParserError {
ParserError{message: format!("Generic IO error: {}", e.description())}
}
}
这很适合尝试!在任何事情上。但现在解析:
fn parse_string(s: &str) -> Result<u64, ParserError> {
let i = try!(s.parse::<u64>());
return Ok(i);
}
我的错误说:
错误:未对类型`core :: num :: ParseIntError
实现特征core::convert::From<parser::ParserError>
我试图实现这个来自:
impl From<core::num::ParseIntError> for ParserError {
fn from(_: core::num::ParseIntError) -> ParserError {
ParserError{message: "Invalid data type".to_string()}
}
}
但我无法获得核心导入。怎么做?
答案 0 :(得分:4)
来自core
的模块由std
重新导出。您只需在代码中将core
替换为std
即可修复错误:
impl From<std::num::ParseIntError> for ParserError {
fn from(_: std::num::ParseIntError) -> ParserError {
ParserError{message: "Invalid data type".to_string()}
}
}