gpt4 book ai didi

rust - 如何使用现有的 Display 特征实现来实现序列化?

转载 作者:行者123 更新时间:2023-11-29 08:26:06 25 4
gpt4 key购买 nike

我希望在 extern crate 中的类型上实现 Serialize 特性,但这是被禁止的。我看了一下 serde 的 remote derive ,但重写类型似乎需要做很多工作。

在我的例子中,我希望序列化的所有类型都实现了 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)
}

playground

但也许有更直接的方法来做到这一点?

关于rust - 如何使用现有的 Display 特征实现来实现序列化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58103801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com