首页 > 解决方案 > Serde 自定义序列化程序

问题描述

我正在遵循使用serde. 它提供了使用 Serde 的 JSON 序列化程序的基本实现。假设我只想序列化无符号整数u8和。是否有可能以某种方式指定此约束并在用户尝试序列化任何其他类型时抛出错误等?u16u32stringf32

我可能会写

fn serialize_string(self, v: string) -> Result<()> {
    return Err(Error::Message("Undefined".to_owned()));
}

fn serialize_f32(self, v: f32) -> Result<()> {
    return Err(Error::Message("Undefined".to_owned()));
}

/* and so forth */

但这感觉太冗长了。

是否可以定义用于序列化自定义类型的协议?例如,我可能有一个Point包含两个坐标xy. 我想以Point压缩格式序列化,如下所述:https ://bitcoin.stackexchange.com/a/84588,即将第一个x坐标序列化为任何其他无符号整数,但添加一个小前缀以指示y坐标是偶数还是奇数. y然后可以通过x使用前缀(条件)来派生。

标签: rustserde

解决方案


推荐阅读