tirse 0.2.6

serde frontent for binary format
Documentation
#![cfg(feature = "use_std")]

use serde::Serialize;
use serde::Deserialize;
use serde_derive::Serialize;
use serde_derive::Deserialize;

use std::slice::Iter;

use tirse::WriteWrapper;
use tirse::DefaultBinarySerializer;
use tirse::DefaultBinaryDeserializer;

type SerializerIntoVec = DefaultBinarySerializer<WriteWrapper<Vec<u8>>, String>;
type DeserializeFromSlice<'a> = DefaultBinaryDeserializer<'a, Iter<'a, u8>, String>;

#[test]
fn test_str() {

    let v = vec![];
    let serializer = SerializerIntoVec::new(v);
    let v = "here".serialize(serializer).unwrap().consume().into_inner();

    assert_eq!(
        v,
        vec![
            4, 0, 0, 0, 0, 0, 0, 0, 'h' as _, 'e' as _, 'r' as _, 'e' as _,
        ]
    );

    let s: &str = Deserialize::deserialize(DeserializeFromSlice::new(v.as_slice().iter())).unwrap();
    assert_eq!(s, "here");

    println!("{:?}", v)
}

#[test]
fn test_struct() {
    #[derive(Serialize, Deserialize, Eq, PartialEq, Debug)]
    pub struct Point3d {
        x: u32,
        y: u32,
        z: u32,
    }

    let p = Point3d { x: 17, y: 7, z: 0 };
    let v = Vec::new();
    let serializer = SerializerIntoVec::new(v);
    let v = p.serialize(serializer).unwrap().consume().into_inner();

    assert_eq!(v, vec![17, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0]);
    println!("{:?}", v);

    let q = Point3d::deserialize(DeserializeFromSlice::new(v.as_slice().iter())).unwrap();
    assert_eq!(p, q);
}