小编Zia*_*man的帖子

测试 serde“with”属性的序列化/反序列化函数

Serde 派生宏能够通过字段属性控制字段的序列化/反序列化方式#[serde(with = "module")]。应该"module"具有具有正确参数和返回类型的序列化和反序列化函数。

不幸的是,这个例子有点过于做作

use serde::{Deserialize, Serialize};

#[derive(Debug, Default, PartialEq, Eq)]
pub struct StringPair(String, String);

mod stringpair_serde {
    pub fn serialize<S>(sp: &super::StringPair, ser: S) -> Result<S::Ok, S::Error>
    where
        S: serde::Serializer,
    {
        ser.serialize_str(format!("{}:{}", sp.0, sp.1).as_str())
    }

    pub fn deserialize<'de, D>(d: D) -> Result<super::StringPair, D::Error>
    where
        D: serde::Deserializer<'de>,
    {
        d.deserialize_str(Visitor)
    }

    struct Visitor;

    impl<'de> serde::de::Visitor<'de> for Visitor {
        type Value = super::StringPair;

        fn expecting(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
            write!(f, "a pair of strings separated …
Run Code Online (Sandbox Code Playgroud)

testing rust serde

5
推荐指数
1
解决办法
1648
查看次数

标签 统计

rust ×1

serde ×1

testing ×1