Я хочу, чтобы атрибут Test::team_size
десериализовался из данных самого объекта Test
:
#[derive(Debug, Serialize, Deserialize)]
struct TeamSize {
pub min: i64,
pub max: i64,
}
#[derive(Debug, Serialize, Deserialize)]
struct Test {
pub i: i64,
pub team_size: TeamSize,
}
fn main() {
let t: Test = serde_json::from_str(r#"{"i": -2, "min": 2, "max": 5}"#).unwrap();
assert_eq!(t.i, -2);
assert_eq!(t.team_size.min, 2);
assert_eq!(t.team_size.max, 5);
}
Этот код не компилируется, и я не знаю, как заставить Серде делать то, что я хочу. Есть ли способ десериализации team_size
в этом примере из JSON исходной структуры, где это подполе?
Похоже, мне нужно что-то вроде #[serde(untagged)]
, но для структуры и для поля, а не всей структуры.