在我手动序列化的结构中,我有一个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