Rust 对于不在当前板条箱中的类型,从中实现的最简单解决方案?

Rust 对于不在当前板条箱中的类型,从中实现的最简单解决方案?,rust,Rust,我正在努力做到以下几点: impl From<SmoltcpError> for SocketSendError { SocketSendError的impl From{ 其中smolctperor和socketsenderro不在当前板条箱中。顺便说一下,我认为只有socketsenderro才需要在当前板条箱中 是否有一种简单的方法来包装SocketSendError,以便进行此转换?错误类型之间的转换非常有用,因为我可以在需要时将.into()。我看不到其他简单的方法来完成

我正在努力做到以下几点:

impl From<SmoltcpError> for SocketSendError {
SocketSendError的impl From{ 其中
smolctperor
socketsenderro
不在当前板条箱中。顺便说一下,我认为只有
socketsenderro
才需要在当前板条箱中

是否有一种简单的方法来包装
SocketSendError
,以便进行此转换?错误类型之间的转换非常有用,因为我可以在需要时将
.into()
。我看不到其他简单的方法来完成此操作


顺便说一句,
SocketSendError
是一个有错误的简单结构。

您可以简单地定义
Error
类型(
enum
struct
),并从
实现任何您想要的
,例如:

pub enum MyError{
没有发现,
消息(&'static str),
DbError(柴油机::结果::错误),
未经授权(&'static str),
InternalServerError(&'static str),
}
发布类型DResult=std::result::result;
发布类型DHttpResult=DResult;
从为DError执行的impl{
...
}
从为DError执行的impl{
...
}
//这一个涵盖了所有这些请求的响应。。。
针对DError的impl ResponseError{
...
}
因此,无论错误来自何处,它们都将转换为
ResponseError


注意,在上面的解决方案中,
actixweb
处理程序对数据库模型mathod进行
web::block
,因此模型方法处理程序返回
DResult
web::block
,以防错误返回
,最后我更喜欢将
actixweb
处理程序返回类型定义为
DHttpResult

或使用或者为您处理样板文件。是的,这很简单!但我喜欢制作日志,处理必须向用户显示的内容(如果需要任何消息,请使用前端)或结构作为响应,处理日志格式等。因此,实现这样的自定义错误使我能够处理它们,但使用样板文件迫使我在每次收到它们(错误)时执行所有这些操作,而不是集中和管理的
impl