【发布时间】:2018-03-29 09:47:00
【问题描述】:
我想使用 Serde 序列化一个通用的数据结构。
我的库的用户应该能够提供他们自己的实现Serialize 和Deserialize 的结构。我应该能够取回他们序列化数据所用值的原始类型信息。
我该怎么做呢?
我尝试过这样的事情:
#[derive(Serialize, Deserialize)]
struct Message<V> {
key: Key,
value: V,
}
我想在反序列化数据后取回V的类型。
这是这样做的方式还是我偏离了轨道?
我希望用户能够扩展可能的值/类型。我想要枚举的行为,但用户可以灵活地添加自己的结构作为可能的候选者。类似于this code,但它们都需要唯一的ids。
【问题讨论】:
-
你可能想看看serde.rs/attr-bound.html
-
@SørenMortensen 我认为这与我所追求的有点相似,但我希望用户提供反序列化的值以及传递不同类型的泛型的可能性。
-
@SørenMortensen,或者可能比我刚开始的时候强。但它可以跟踪我使用的类型吗?还是我需要告诉 rust
Outer<u64, str>这样的类型是什么,或者可以推断出它们吗?
标签: generics serialization rust traits serde