rust - Serde 自定义序列化程序
问题描述
我正在遵循使用serde
. 它提供了使用 Serde 的 JSON 序列化程序的基本实现。假设我只想序列化无符号整数u8
和。是否有可能以某种方式指定此约束并在用户尝试序列化任何其他类型时抛出错误等?u16
u32
string
f32
我可能会写
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
包含两个坐标x
和y
. 我想以Point
压缩格式序列化,如下所述:https ://bitcoin.stackexchange.com/a/84588,即将第一个x
坐标序列化为任何其他无符号整数,但添加一个小前缀以指示y
坐标是偶数还是奇数. y
然后可以通过x
使用前缀(条件)来派生。
解决方案
推荐阅读
- java - 理解 CompletableFuture 简单实现
- c++ - 在函数内部的类中创建结构时遇到问题
- angularjs - 如何解决:缺少“使用严格”声明
- ios - 如何在我的 iOS 应用程序(Swift 5)中检查 Google 身份验证状态
- jquery - 没有从引导模式中删除
- visual-studio-code - VS Code React Component Ctrl 单击禁用快速查看并在新选项卡中打开?
- javascript - 每次页面刷新时如何继续计算
- java - 如何使用用户电影和收藏夹创建房间数据库?
- java - 在 JUnit 中使用 @BeforeAll 实例化对象返回 null
- ios - 从 Firebase 加载图像非常慢