use error::Result;
pub type DeserializeFn<T> = fn(&[u8]) -> Result<T>;
pub type SerializeFn<T> = fn(&T, &mut Vec<u8>);
pub struct Marshaller<T> {
pub ser: SerializeFn<T>,
pub de: DeserializeFn<T>,
}
#[cfg(feature = "protobuf-codec")]
pub mod pb_codec {
use protobuf::{self, Message};
use error::Result;
#[inline]
pub fn ser<T: Message>(t: &T, buf: &mut Vec<u8>) {
t.write_to_vec(buf).unwrap()
}
#[inline]
pub fn de<T: Message>(buf: &[u8]) -> Result<T> {
protobuf::parse_from_bytes(buf).map_err(From::from)
}
}