Advertisement
Guest User

Untitled

a guest
Aug 17th, 2019
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.01 KB | None | 0 0
  1. extern crate serde_yaml; // 0.8.9;
  2. use serde::{Deserialize, Serialize};
  3. use std::collections::HashMap;
  4.  
  5. #[derive(Serialize, Deserialize, Debug)]
  6. #[serde(untagged)]
  7. enum MapOrVec {
  8. List(Vec<HashMap<String, String>>),
  9. Map(HashMap<String, String>),
  10. }
  11.  
  12. fn main() {
  13. let mut map = HashMap::new();
  14. map.insert(String::from("abc"), String::from("def"));
  15. map.insert(String::from("123"), String::from("456"));
  16. let s = serde_yaml::to_string(&MapOrVec::Map(map.clone())).unwrap();
  17. println!("{}", s);
  18.  
  19. let mut map2 = HashMap::new();
  20. map2.insert(String::from("test"), String::from("var"));
  21.  
  22. let s = serde_yaml::to_string(&MapOrVec::List(vec![map, map2])).unwrap();
  23. println!("{}", s);
  24.  
  25. let deserialized_map: MapOrVec =
  26. serde_yaml::from_str("---\nabc: def\n\"123\": \"456\"").unwrap();
  27. println!("{:?}", deserialized_map);
  28.  
  29. let deserialized_vec: MapOrVec =
  30. serde_yaml::from_str("---\n- \"123\": \"456\"\n abc: def\n- test: var").unwrap();
  31. println!("{:?}", deserialized_vec);
  32. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement