-
-
Notifications
You must be signed in to change notification settings - Fork 6
Description
Comment moved over from facet-rs/facet#326:
My use case that the serde ecosystem is struggling with is this:
#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
#[serde(tag = "type")]
enum Outer {
OVar1,
#[serde(untagged)]
Inner(Inner),
}
#[derive(serde_derive::Serialize, serde_derive::Deserialize)]
#[serde(tag = "type")]
enum Inner {
IVar1,
IVar2,
}Which should just work like
Outer::OVar1⭤{"type":"OVar1"}Outer::Inner(Inner::Ivar1)⭤{"type":"Ivar1"}⭤Inner::Ivar1Outer::Inner(Inner::Ivar2)⭤{"type":"Ivar2"}⭤Inner::Ivar2
But also strange things happen like [0] deserializing to Outer::OVar1.
I feel like we can do better.
Metadata
Metadata
Assignees
Labels
No labels