gpt4 book ai didi

rust - 如何使用 Serde 只允许一个字段或另一个字段?

转载 作者:行者123 更新时间:2023-12-05 09:30:07 27 4
gpt4 key购买 nike

假设我有这个结构:

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,
}

我如何反序列化它但只允许这些字段之一存在?

最佳答案

评论中关于使用枚举的建议可能是您最好的选择。您不需要用枚举替换您的结构,而是添加一个单独的枚举类型来表示此约束,例如:

use serde::{Serialize, Deserialize};

#[derive(Deserialize)]
enum OneOf {
F1(usize), F2(usize)
}

#[derive(Deserialize)]
struct MyStruct {
one_of_field: OneOf,
other_field: String,
}

现在 MyStructone_of_field 可以用 F1F2 初始化。

关于rust - 如何使用 Serde 只允许一个字段或另一个字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69834142/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com