mod base; mod error; pub use self::base::*; pub use self::error::*; pub trait Read<'a> { /// The error that a read can return. type Error: Error; /// Read a single byte. fn read(&mut self) -> Result; /// Start mark. fn start_mark(&mut self); /// Zero-copy drain from mark. fn drain_mark(&mut self) -> Result<&'a [u8], Self::Error>; } pub trait Deserialize: Sized { fn deserialize<'de, D>(d: D) -> Result where D: Deserializer<'de>; } // pub trait Unit { // fn from_name_value(name: &str, value: T) -> Result // where // T: Deserialize, // E: Error; // } // pub enum MaybeUnit<'a, T> { // Raw(T), // Wrapped(&'a str, T) // } pub trait Deserializer<'de> { type Error: Error; //fn deserialize_real_u8(self) -> Result; //fn deserialize_real_u16(self) -> Result; //fn deserialize_real_u32(self) -> Result; //fn deserialize_real_u64(self) -> Result; //fn deserialize_real_i8(self) -> Result; //fn deserialize_str(self) -> Result<&'de str, Self::Error>; //fn deserialize_unit(self) -> Result // where U: Unit; //fn deserialize_maybe_unit(self) -> Result; }