我无法获得以下代码进行编译。
$(".clickable").click(function( event ) {
var target = $( event.target );
if ( !target.is( "a" ) ) {
window.location=$(this).data("link");
}
}
已经实施的错误。From
的手动impl,则会收到From
未执行的错误。From
,那就可以了。我认为这是由于核心中的空白impl Error
。我应该如何解决这个问题?不实施impl<T> From<T> for T
实际上不是一种选择。
代码(playground)
Error
答案 0 :(得分:3)
你没有。
无论如何,这种实施有点无用。这意味着所有其他错误类型将立即被装箱。此时,您也可以使用涉及Box<Error>
的现有转化,然后使用 。
如果您想要一个实际保留统一错误类型的错误类型,您需要为每个错误类型实施一次From
。 error-type
包可以帮助定义统一错误类型。
答案 1 :(得分:0)
根据上述评论,我发现这种方法只有作用:
impl<T: error::Error + 'static> From<Box<T>> for Error {
fn from(e: Box<T>) -> Self {
Error::Other(e)
}
}
要使用它,您应该Box
错误:
try!(any_result().map_err(Box::new))
但是如果您需要一般性错误(例如用户定义的任务),您不需要用枚举包装它,尝试直接使用它:
trait AnyTask {
fn do_it(&self) -> Result<Success, Box<Error>>;
}
可以在任何地方使用try!
或.into()
。这样:
fn do_it(&self) -> Result<Succeed, Box<Error>> {
let row = try!(self.database.find_last());
if row.some_condition {
return Err("I don't like it!".into());
}
try!(self.database.insert(row));
Ok(Success)
}