52 lines
1.3 KiB
Rust
52 lines
1.3 KiB
Rust
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<u8, Self::Error>;
|
|
|
|
/// 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<Self, D::Error>
|
|
where D: Deserializer<'de>;
|
|
}
|
|
|
|
// pub trait Unit {
|
|
// fn from_name_value<T, E>(name: &str, value: T) -> Result<T, E>
|
|
// 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<u8, Self::Error>;
|
|
//fn deserialize_real_u16(self) -> Result<u16, Self::Error>;
|
|
//fn deserialize_real_u32(self) -> Result<u32, Self::Error>;
|
|
//fn deserialize_real_u64(self) -> Result<u64, Self::Error>;
|
|
//fn deserialize_real_i8(self) -> Result<i8, Self::Error>;
|
|
|
|
//fn deserialize_str(self) -> Result<&'de str, Self::Error>;
|
|
|
|
//fn deserialize_unit<U>(self) -> Result<U, Self::Error>
|
|
// where U: Unit;
|
|
//fn deserialize_maybe_unit(self) -> Result<MaybeUnit, Self::Error>;
|
|
} |