diff --git a/Cargo.toml b/Cargo.toml index 6950156..fdda267 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,3 +12,7 @@ proc-macro = true [dependencies] syn = "1.0" quote = "1.0" + +[dev-dependencies] +serde = "1.0" +serde_json = "1.0" diff --git a/examples/airports.rs b/examples/airports.rs new file mode 100644 index 0000000..46f70c0 --- /dev/null +++ b/examples/airports.rs @@ -0,0 +1,36 @@ +#[macro_use] +extern crate enumscribe; + +use std::collections::HashMap; + +#[derive(EnumStrDeserialize, PartialEq, Eq, Debug)] +#[case_insensitive] +enum Airport { + #[str_name("LHR")] + Heathrow, + #[str_name("LGW")] + Gatwick, + #[str_name("LTN")] + Luton, + #[str_name("BHX")] + BirminghamInternational, + #[other] + Other(Box), +} + +fn main() { + let json_str = r#" + { + "airport_1": "LTN", + "airport_2": "bhx", + "airport_3": "lHr", + "airport_4": "MAN" + }"#; + + let json: HashMap = serde_json::from_str(json_str).unwrap(); + + println!("{:?}", json.get("airport_1").unwrap()); + println!("{:?}", json.get("airport_2").unwrap()); + println!("{:?}", json.get("airport_3").unwrap()); + println!("{:?}", json.get("airport_4").unwrap()); +}