enser 0.1.4

Enum serialization with tag
Documentation
use serde::{Deserialize, Serialize};

#[derive(Debug, Deserialize, Serialize)]
struct Struct {
    without_tuple: Vec<WithoutTuple>,
    with_tuple: Vec<WithTuple>,
    enser: Vec<Enser>,
}

#[derive(Debug, Deserialize, Serialize)]
enum WithoutTuple {
    Tbd,
    None,
    Some(u32),
    Named { value: u32 },
}

#[derive(Debug, Deserialize, Serialize)]
enum WithTuple {
    Tbd(()),
    None(()),
    Some(u32),
    Named { value: u32 },
}

#[enser::enser]
#[derive(Clone, Debug, Deserialize, Serialize)]
enum Enser {
    Tbd,
    None,
    Some(u32),
    Named { value: u32 },
}

fn main() {
    let from_yaml: Struct = serde_yaml::from_str(
        r#"without_tuple:
- Tbd
- None
- !Some 123
- !Named
  value: 456
with_tuple:
- !Tbd null
- !None null
- !Some 123
- !Named
  value: 456
enser:
- !Tbd null
- !None null
- !Some 123
- !Named
  value: 456
"#,
    )
    .unwrap();
    println!("{from_yaml:?}");

    let from_json: Struct = serde_json::from_str(
        r#"{
  "without_tuple": [
    "Tbd",
    "None",
    { "Some": 123 },
    { "Named": { "value": 456 } }
  ],
  "with_tuple": [
    { "Tbd": null },
    { "None": null },
    { "Some": 123 },
    { "Named": { "value": 456 } }
  ],
  "enser": [
    { "Tbd": null },
    { "None": null },
    { "Some": 123 },
    { "Named": { "value": 456 } }
  ]
}"#,
    )
    .unwrap();
    println!("{from_json:?}");
}