65 lines
1.8 KiB
Rust
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>;
|
|
} |