我有一个:
struct Duo<T>
{
classroom:String,
children: T
}
我知道T
要么是String
,要么是Vec<String>
.
我可以以某种方式编写代码T
String
或Vec<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,
}
操场