rust-sen/sehn/src/de/mod.rs

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>;
}