【发布时间】:2021-11-04 03:10:03
【问题描述】:
假设我有这个结构:
use serde::{Serialize, Deserialize};
#[derive(Deserialize)]
struct MyStruct {
field_1: Option<usize>, // should only have field_1 or field_2
field_2: Option<usize>, // should only have field_1 or field_2
other_field: String,
}
我怎样才能反序列化这个但只允许这些字段之一存在?
【问题讨论】:
-
使用枚举,我猜。
-
这两个字段是互斥的吗?或者,是否存在两者都存在的情况?
-
@Joe_Jingyu 它们应该是互斥的,我想阻止可能试图同时包含它们的情况。
-
如果是这样,正如@Dev611 还建议的那样,使用
enum而不是struct看起来不错。 -
我应该包含在示例中,但
struct中还会有其他字段