error-handling - 如何处理实现 fmt::Display 的错误?
问题描述
我想知道如何将fmt::Error
, 轨道上可能出现的其他类型的临时错误正确转换fn fmt
为fmt::Error
类型?
比方说:
use std::fmt;
use serde::{Serialize, Deserialize};
#[derive(Serialize, Deserialize)]
struct MyStruct {
x: i32
}
impl fmt::Display for MyStruct {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", serde_json::to_string(&self).map_err(|e| /*???*/)?)
}
}
如上面的示例所示,我想知道我应该如何转换,例如,serde_json::Error
以fmt::Error
符合返回的fmt::Result
特征。
解决方案
fmt::Error
没有字段。它只是一个指示值,“不支持传输除了发生错误之外的错误”(docs)。因此,如果您可以只返回一个没有其他消息的错误,那么将错误映射到fmt::Error
:
foo.map_err(|_| fmt::Error)
推荐阅读
- angular - Plotly.js 不适用于 SSR Angular 应用程序
- reactjs - 如何将我的 Reactjs Web 应用程序连接到安全的 MQTT 代理?
- reporting-services - 如何显示该日期没有值的日期
- java - 如何从文件中读取然后倒退?
- gurobi - 如何解决 gurobi 求解器中的导入错误
- python - 为什么这个类中的函数不使用更新的类属性?
- python - Numpy数组:不选择特定的行或列
- android - 如何使用改造 android 捕获图像和发布数据
- mysql - mysql查询不适用于条件
- stm32 - Keil uvision 5无法下载flash