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