Advertisement
Guest User

Untitled

a guest
Feb 21st, 2019
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.09 KB | None | 0 0
  1. extern crate serde; // 1.0.85
  2. extern crate serde_json; // 1.0.37
  3. extern crate serde_derive; // 1.0.85
  4.  
  5. use serde_derive::{Deserialize, Serialize};
  6.  
  7. macro_rules! show {
  8. ($e : expr) => {
  9. println!("{}: {:?}", stringify!($e), $e);
  10. }
  11. }
  12.  
  13. #[derive(Debug, Deserialize, Serialize)]
  14. pub struct Mystruct {
  15. pub foo : f64,
  16. pub bar : Vec<String>
  17. }
  18.  
  19. fn skip6(x : &mut &[u8]) {
  20. *x = &(*x)[6..];
  21. }
  22.  
  23.  
  24. fn main() {
  25. let m = Mystruct {
  26. foo: -1.0,
  27. bar: vec!["hello".into(), "world".into()]
  28. };
  29. show!(m);
  30. show!(serde_json::to_string(&m).unwrap());
  31. let r = r#"{"foo":2.5,"bar":["abc","123"]}abcdef123456"#;
  32. show!(r.len());
  33. let mut deserializer = serde_json::Deserializer::from_str(r)
  34. .into_iter::<serde_json::Value>();
  35. show!(deserializer.byte_offset());
  36. show!(serde_json::from_value::<Mystruct>(deserializer.next().unwrap().unwrap()).unwrap());
  37. show!(deserializer.byte_offset());
  38. show!(&r[deserializer.byte_offset()..]);
  39. let mut x = &r.as_bytes()[deserializer.byte_offset()..];
  40. show!(x.len());
  41. skip6(&mut x);
  42. show!(x.len());
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement