我想实现Serialize
在一个外部的箱型特征,但它禁止。 我看了一下SERDE的远程派生 ,但似乎很多工作改写类型。
在我的情况下,所有我想序列化的类型实现Display
特性,并进行序列化,我只是想使用该特性。
我会怎么做呢?
我想实现Serialize
在一个外部的箱型特征,但它禁止。 我看了一下SERDE的远程派生 ,但似乎很多工作改写类型。
在我的情况下,所有我想序列化的类型实现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)
}
操场
但有可能这样做的更简单的方法?