【发布时间】:2021-05-14 06:06:39
【问题描述】:
我用:
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord)]
pub struct Foo {
...
}
我想为Foo 编写一个自定义Deserialize。
如何查看serde 生成的派生Deserialize 代码?我想以此为起点。
【问题讨论】:
我用:
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord)]
pub struct Foo {
...
}
我想为Foo 编写一个自定义Deserialize。
如何查看serde 生成的派生Deserialize 代码?我想以此为起点。
【问题讨论】:
如何查看 serde 生成的派生反序列化代码?我想以此为起点。
您可以要求 rustc 转储宏扩展代码(它位于 rust 游乐场的“工具”下)。由于 rustc 调用有点复杂,尤其是对于一个成熟的基于货物的项目,因此 rustacean extraordinaire David Tolnay 发布了一个cargo expand 命令,您可以使用cargo install,这基本上为您完成了烦人的工作。
当涉及到 serde 时,我不建议将其作为 起点,但生成的 ser/de 代码有些粗糙/难以阅读。我建议改用the serde documentation,尤其是serde datamodel 和custom serialization。
【讨论】: