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

65 lines
1.8 KiB
Rust

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<S>(&self, s: S) -> Result<(), S::Error>
where
S: Serializer;
}
pub trait Serializer: Sized {
type Error: Error;
fn serialize_any<T>(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<Item = &'a str>;
fn serialize_unit<'a, V>(self, name: &'a str, value: V) -> Result<(), Self::Error>
where V: Serialize;
fn serialize_dict<K, V, D>(self, dict: D) -> Result<(), Self::Error>
where
K: Serialize,
V: Serialize,
D: IntoIterator<Item = (K, V)>;
fn serialize_list<V, L>(self, list: L) -> Result<(), Self::Error>
where
V: Serialize,
L: IntoIterator<Item = V>;
}