我无法获得以下代码进行编译.
From已经实现的错误.From我得到了From未实现的错误.Error它工作正常.我想这是由于impl<T> From<T> for T核心的空白.我应该如何解决这个问题?不实施Error不是一个真正的选择.
代码(游乐场)
use std::fmt;
use std::io;
use std::error::Error;
#[derive(Debug)]
enum ErrorType {
Other(Box<Error>)
}
impl fmt::Display for ErrorType {
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
fmt.write_str("not implemented")
}
}
impl Error for ErrorType {
fn description(&self) -> &str {
use self::ErrorType::*;
match *self {
Other(ref err) => err.description(),
}
}
}
impl<E: Error + 'static> From<E> for ErrorType {
fn from(other: E) -> Self {
ErrorType::Other(Box::new(other))
}
}
fn ret_io_err() -> Result<(), io::Error> {
Ok(())
}
fn ret_error_type() -> Result<(), ErrorType> {
try!(ret_io_err());
Ok(())
}
fn main() {}
Run Code Online (Sandbox Code Playgroud)
你不知道。
无论如何,这个实现有点无用。这意味着所有其他错误类型将立即被装箱。那时,您不妨利用现有的转换Box<Error>并使用它。
如果您想要一个实际上保留统一错误类型的错误类型,则需要From为每个错误实现一次。该error-type板条箱可以帮助定义统一的错误类型。
| 归档时间: |
|
| 查看次数: |
278 次 |
| 最近记录: |