1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
extern crate byteorder;

extern crate serde;
use serde::{Serialize, Deserialize};

mod ser;
use ser::Serializer;
mod de;
use de::Deserializer;
mod error;
pub use error::{Error, Result};

pub fn serialize<T>(value: &T) -> Result<Vec<u8>>
    where T: Serialize
{
    let mut bytes = Vec::with_capacity(128);
    {
        let mut ser = Serializer::new(&mut bytes);
        try!(Serialize::serialize(value, &mut ser));
    }
    Ok(bytes)
}

pub fn deserialize<T>(mut bytes: &[u8]) -> Result<T>
    where T: Deserialize
{
    let mut de = Deserializer::new(&mut bytes);
    Deserialize::deserialize(&mut de)
}