如何使用serde使用不可序列化的密钥序列化HashMap?

时间:2019-10-09 17:17:36

标签: rust serde

在我手动序列化的结构中,我有一个HashMap作为值:

pub struct GitInfo {
    pub branches: HashMap<Oid, Branch>,
}

Branch是我定义的东西,但是Oid是我不拥有的外部类型,我很乐意使用to_string()方法... < / p>

我已经读过How do I use Serde to serialize a HashMap with structs as keys to JSON?,但是它涉及作者定义的键-我无法为Serialize实现Oid,因为它不在我的箱子里。而且出于类似原因,我无法为Serialize实现HashMap<Oid, Branch>

有没有解决的办法?我可以围绕HashMap<Oid, Branch>构建一个包装器结构,但这似乎有些过分。

有人建议我看看How to transform fields during serialization using Serde?How can I implement Serialize using an existing Display trait implementation?-两者似乎都归结为使用serialize_with-我可以这样做,但我必须使用{ {1}}宏,当我计划手动序列化derive(Serialize)时(请参见下文)。或者我可以使用包装对象。

如果只有这些选项,我可以接受,但似乎没有一种更简单的方法令人惊讶,是否有某种方法可以调用类似GitInfo宏使用的函数,但是来自我的serialize_with序列化中?

类似的东西:

GitInfo

0 个答案:

没有答案