如何为已知的 T 类型实现反序列化程序?



我有一个:

struct Duo<T> 
{
classroom:String,
children: T
}

我知道T要么是String,要么是Vec<String>.

我可以以某种方式编写代码TStringVec<String>吗?

我想使用 Serde 为 T 类型实现一个反序列化程序,有一个 JSON 文件,其中我有字符串或 Vec。

如何为 T 类型编写特征?我不想为整个结构编写特征。可能吗?我希望我足够清楚。谢谢!

你真的不需要自己实现它。只是告诉编译器T应该是什么。

您可以做两件事:

只是从Deserialize派生

#[derive(Deserialize)]
struct Duo<T> 
{
classroom: String,
children: T
}

操场

将自定义包装枚举类型与untagged标志一起使用:

#[derive(Deserialize)]
#[serde(untagged)]
enum Children {
Single(String),
Multi(Vec<String>)
}

#[derive(Deserialize)]
struct Duo 
{
classroom: String,
children: Children,
}

操场

最新更新