mod bytes_array;
mod deserializer;
mod downward_bytes;
mod error;
mod impls;
mod serializer;
mod varint64;
pub use bytes_array::BytesArray;
pub use deserializer::Deserializer;
pub use downward_bytes::DownwardBytes;
pub use error::{Error, Result};
pub use serializer::Serializer;
pub use varint64::VarInt64;
pub use derse_derive::{Deserialize, Serialize};
pub trait Serialize {
fn serialize<S: Serializer + Default>(&self) -> Result<S> {
let mut serializer = S::default();
self.serialize_to(&mut serializer)?;
Ok(serializer)
}
fn serialize_to<S: Serializer>(&self, serializer: &mut S) -> Result<()>;
}
pub trait Deserialize<'a> {
fn deserialize<D: Deserializer<'a>>(mut der: D) -> Result<Self>
where
Self: Sized,
{
Self::deserialize_from(&mut der)
}
fn deserialize_from<D: Deserializer<'a>>(buf: &mut D) -> Result<Self>
where
Self: Sized;
}
pub trait DetailedDeserialize<'a> {
fn deserialize_len<D: Deserializer<'a>>(buf: &mut D) -> Result<usize>;
fn deserialize_fields<D: Deserializer<'a>>(buf: &mut D) -> Result<Self>
where
Self: Sized;
}