如何查看serde生成的反序列化实现?

How to see serde's generated implementation of Deserialize?

我使用:

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord)]
pub struct Foo {
    ...
}

我想为 Foo 编写自定义 Deserialize

如何查看 serde 生成的派生 Deserialize 代码?我想以此为起点。

How can I see the derived Deserialize code which serde generates? I'd like to use that as a starting point.

您可以要求 rustc 转储宏扩展代码(它在 rust 操场的“工具”下)。由于 rustc 调用有点复杂,特别是对于成熟的基于货物的项目,rustacean extraordinaire David Tolnay 发布了一个 cargo expand 命令,您可以 cargo install,它基本上为您完成了烦人的工作。

我不推荐它作为 起点 当谈到 serde 时,生成的 ser/de 代码有点粗糙/难以阅读。我建议通过 the serde documentation instead, especially serde datamodel and custom serialization.