use serde::{Deserialize, Serialize};
use serde_yml::with::singleton_map;
pub(crate) fn main() {
println!(
"\n❯ Executing examples/with/singleton_map_enum_variants.rs"
);
#[derive(Serialize, Deserialize, PartialEq, Debug)]
enum MultiVariantEnum {
Unit,
Newtype(String),
Tuple(i32, bool),
Struct { field: f64 },
}
#[derive(Serialize, Deserialize, PartialEq, Debug)]
struct EnumStruct {
#[serde(with = "singleton_map")]
field1: MultiVariantEnum,
#[serde(with = "singleton_map")]
field2: MultiVariantEnum,
}
let input = EnumStruct {
field1: MultiVariantEnum::Unit,
field2: MultiVariantEnum::Struct {
field: std::f64::consts::PI,
},
};
let yaml = serde_yml::to_string(&input).unwrap();
println!("\n✅ Serialized YAML:\n{}", yaml);
let output: EnumStruct = serde_yml::from_str(&yaml).unwrap();
println!("\n✅ Deserialized YAML:\n{:#?}", output);
assert_eq!(input, output);
}