我希望实施Serialize
外部板条箱中类型的特征,但这是禁止的。我看了 serde 的远程导出 https://serde.rs/remote-derive.html,但重写类型似乎需要做很多工作。
就我而言,我希望序列化的所有类型都实现了Display
特征,对于序列化,我只想使用该特征。
我该怎么做呢?
这是我的尝试(注意:我是OP):
use serde::{Serialize, Serializer};
use std::io::Error;
use std::fmt::Display;
#[derive(Debug, Serialize)]
pub enum MyError {
Custom,
#[serde(serialize_with = "use_display")]
Io(Error)
}
fn use_display<T, S>(value: &T, serializer: S) -> Result<S::Ok, S::Error>
where
T: Display,
S: Serializer
{
serializer.collect_str(value)
}
但也许有一种更直接的方法可以做到这一点?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)