You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
820 B
Rust
37 lines
820 B
Rust
#[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<String>),
|
|
}
|
|
|
|
fn main() {
|
|
let json_str = r#"
|
|
{
|
|
"airport_1": "LTN",
|
|
"airport_2": "bhx",
|
|
"airport_3": "lHr",
|
|
"airport_4": "MAN"
|
|
}"#;
|
|
|
|
let json: HashMap<String, Airport> = 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());
|
|
}
|