首先,我想说的是,在StackOverflow和网络上有很多类似的问题,但我就是不知道如何解决这个错误.
所以我有一个 struct ,它代表我自己的错误类型:
#[derive(Debug)]
pub struct Error {
msg: String,
}
然后我继续为我的错误类型实现Display
和std::error::Error
:
impl Display for Error {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", self.msg)
}
}
impl std::error::Error for Error {
fn description(&self) -> &str {
&self.msg
}
}
现在我try 实现std::convert::From
,这样我就可以与?
操作符无缝地使用我的错误类型:
impl From<dyn std::error::Error> for Error {
fn from(err: dyn std::error::Error) -> Self {
Error {
msg: err.to_string(),
}
}
}
但是rust编译器给了我这个错误:
error[E0277]: the size for values of type `(dyn std::error::Error + 'static)` cannot be known
at compilation time
--> wasm_api/geohub_wasm_filehandler_api/src/lib.rs:33:6
|
33 | impl From<dyn std::error::Error> for Error {
| ^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time
|
我知道,默认情况下,泛型函数只能在编译时具有已知大小的类型上工作.但是我想不出如何正确地解决这个问题.
谢谢你的帮助!
Link to code on Rust-Playground: