Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extern crate serde; // 1.0.85
- extern crate serde_json; // 1.0.37
- extern crate serde_derive; // 1.0.85
- use serde_derive::{Deserialize, Serialize};
- macro_rules! show {
- ($e : expr) => {
- println!("{}: {:?}", stringify!($e), $e);
- }
- }
- #[derive(Debug, Deserialize, Serialize)]
- pub struct Mystruct {
- pub foo : f64,
- pub bar : Vec<String>
- }
- fn skip6(x : &mut &[u8]) {
- *x = &(*x)[6..];
- }
- fn main() {
- let m = Mystruct {
- foo: -1.0,
- bar: vec!["hello".into(), "world".into()]
- };
- show!(m);
- show!(serde_json::to_string(&m).unwrap());
- let r = r#"{"foo":2.5,"bar":["abc","123"]}abcdef123456"#;
- show!(r.len());
- let mut deserializer = serde_json::Deserializer::from_str(r)
- .into_iter::<serde_json::Value>();
- show!(deserializer.byte_offset());
- show!(serde_json::from_value::<Mystruct>(deserializer.next().unwrap().unwrap()).unwrap());
- show!(deserializer.byte_offset());
- show!(&r[deserializer.byte_offset()..]);
- let mut x = &r.as_bytes()[deserializer.byte_offset()..];
- show!(x.len());
- skip6(&mut x);
- show!(x.len());
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement