mod base; mod error; mod impls; pub use self::base::*; pub use self::error::*; pub trait Write { /// The core error that may bubble from /// attempting to write. type Error: Error; /// The write function used with serialization. fn write(&mut self, buf: &[u8]) -> Result<(), Self::Error>; } pub trait Serialize { fn serialize(&self, s: S) -> Result<(), S::Error> where S: Serializer; } pub trait Serializer: Sized { type Error: Error; fn serialize_any(self, any: T) -> Result<(), Self::Error> where T: Serialize { any.serialize(self) } fn serialize_real_u8(self, real: u8) -> Result<(), Self::Error>; fn serialize_real_u16(self, real: u16) -> Result<(), Self::Error>; fn serialize_real_u32(self, real: u32) -> Result<(), Self::Error>; fn serialize_real_u64(self, real: u64) -> Result<(), Self::Error>; fn serialize_real_i8(self, real: i8) -> Result<(), Self::Error>; fn serialize_real_i16(self, real: i16) -> Result<(), Self::Error>; fn serialize_real_i32(self, real: i32) -> Result<(), Self::Error>; fn serialize_real_i64(self, real: i64) -> Result<(), Self::Error>; fn serialize_real_f32(self, real: f32) -> Result<(), Self::Error>; fn serialize_real_f64(self, real: f64) -> Result<(), Self::Error>; fn serialize_atom<'a>(self, atom: &'a str) -> Result<(), Self::Error>; fn serialize_text<'a>(self, text: &'a str) -> Result<(), Self::Error>; fn serialize_multiline_text<'a, M>(self, lines: M) -> Result<(), Self::Error> where M: IntoIterator; fn serialize_unit<'a, V>(self, name: &'a str, value: V) -> Result<(), Self::Error> where V: Serialize; fn serialize_dict(self, dict: D) -> Result<(), Self::Error> where K: Serialize, V: Serialize, D: IntoIterator; fn serialize_list(self, list: L) -> Result<(), Self::Error> where V: Serialize, L: IntoIterator; }