Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extern crate serde_yaml; // 0.8.9;
- use serde::{Deserialize, Serialize};
- use std::collections::HashMap;
- #[derive(Serialize, Deserialize, Debug)]
- #[serde(untagged)]
- enum MapOrVec {
- List(Vec<HashMap<String, String>>),
- Map(HashMap<String, String>),
- }
- fn main() {
- let mut map = HashMap::new();
- map.insert(String::from("abc"), String::from("def"));
- map.insert(String::from("123"), String::from("456"));
- let s = serde_yaml::to_string(&MapOrVec::Map(map.clone())).unwrap();
- println!("{}", s);
- let mut map2 = HashMap::new();
- map2.insert(String::from("test"), String::from("var"));
- let s = serde_yaml::to_string(&MapOrVec::List(vec![map, map2])).unwrap();
- println!("{}", s);
- let deserialized_map: MapOrVec =
- serde_yaml::from_str("---\nabc: def\n\"123\": \"456\"").unwrap();
- println!("{:?}", deserialized_map);
- let deserialized_vec: MapOrVec =
- serde_yaml::from_str("---\n- \"123\": \"456\"\n abc: def\n- test: var").unwrap();
- println!("{:?}", deserialized_vec);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement