Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.92 KB | None | 0 0
  1. extern crate serde_derive;
  2.  
  3. extern crate serde;
  4. extern crate serde_json;
  5.  
  6. use serde::{Serialize, Deserialize};
  7.  
  8. #[derive(Serialize, Deserialize)]
  9. pub struct A<'a> {
  10. pub v: &'a str
  11. }
  12.  
  13. impl<'a> std::fmt::Display for A<'a> {
  14. fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
  15. write!(f, "A{{v: {}}}", self.v)
  16. }
  17. }
  18.  
  19. fn main() {
  20. // ex 1 works fine
  21. let a1 = A{v: "hello"};
  22. let v1 = serde_json::to_string(&a1).unwrap();
  23. let deser_value1 = serde_json::from_str::<A>(&v1).unwrap();
  24. println!("deser1: {}", deser_value1);
  25.  
  26. // ex 2
  27. let v2 = r#"{"v":"hel\"lo"}"#;
  28. let deser_value2 = serde_json::from_str::<A>(&v2).unwrap();
  29. println!("deser2: {}", deser_value2);
  30.  
  31. // ex 3 runtime error
  32. let a3 = A{v: "hel\"lo"};
  33. let v3 = serde_json::to_string(&a3).unwrap();
  34. let deser_value3 = serde_json::from_str::<A>(&v3).unwrap();
  35. println!("deser3: {}", deser_value3);
  36. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement