#[cfg(feature = "std")]
use std::error;
#[cfg(not(feature = "std"))]
use error;
#[cfg(all(feature = "collections", not(feature = "std")))]
use collections::String;
pub mod impls;
pub trait Error: Sized + error::Error {
#[cfg(any(feature = "std", feature = "collections"))]
fn custom<T: Into<String>>(msg: T) -> Self;
#[cfg(all(not(feature = "std"), not(feature = "collections")))]
fn custom<T: Into<&'static str>>(msg: T) -> Self;
fn invalid_value(msg: &str) -> Self {
Error::custom(format!("invalid value: {}", msg))
}
}
pub trait Serialize {
fn serialize<S>(&self, serializer: &mut S) -> Result<(), S::Error>
where S: Serializer;
}
pub trait Serializer {
type Error: Error;
type SeqState;
type TupleState;
type TupleStructState;
type TupleVariantState;
type MapState;
type StructState;
type StructVariantState;
fn serialize_bool(&mut self, v: bool) -> Result<(), Self::Error>;
fn serialize_isize(&mut self, v: isize) -> Result<(), Self::Error>;
fn serialize_i8(&mut self, v: i8) -> Result<(), Self::Error>;
fn serialize_i16(&mut self, v: i16) -> Result<(), Self::Error>;
fn serialize_i32(&mut self, v: i32) -> Result<(), Self::Error>;
fn serialize_i64(&mut self, v: i64) -> Result<(), Self::Error>;
fn serialize_usize(&mut self, v: usize) -> Result<(), Self::Error>;
fn serialize_u8(&mut self, v: u8) -> Result<(), Self::Error>;
fn serialize_u16(&mut self, v: u16) -> Result<(), Self::Error>;
fn serialize_u32(&mut self, v: u32) -> Result<(), Self::Error>;
fn serialize_u64(&mut self, v: u64) -> Result<(), Self::Error>;
fn serialize_f32(&mut self, v: f32) -> Result<(), Self::Error>;
fn serialize_f64(&mut self, v: f64) -> Result<(), Self::Error>;
fn serialize_char(&mut self, v: char) -> Result<(), Self::Error>;
fn serialize_str(&mut self, value: &str) -> Result<(), Self::Error>;
fn serialize_bytes(&mut self, value: &[u8]) -> Result<(), Self::Error>;
fn serialize_unit(&mut self) -> Result<(), Self::Error>;
fn serialize_unit_struct(
&mut self,
name: &'static str,
) -> Result<(), Self::Error>;
fn serialize_unit_variant(
&mut self,
name: &'static str,
variant_index: usize,
variant: &'static str,
) -> Result<(), Self::Error>;
fn serialize_newtype_struct<T: Serialize>(
&mut self,
name: &'static str,
value: T,
) -> Result<(), Self::Error>;
fn serialize_newtype_variant<T: Serialize>(
&mut self,
name: &'static str,
variant_index: usize,
variant: &'static str,
value: T,
) -> Result<(), Self::Error>;
fn serialize_none(&mut self) -> Result<(), Self::Error>;
fn serialize_some<T: Serialize>(
&mut self,
value: T,
) -> Result<(), Self::Error>;
fn serialize_seq(
&mut self,
len: Option<usize>,
) -> Result<Self::SeqState, Self::Error>;
fn serialize_seq_elt<T: Serialize>(
&mut self,
state: &mut Self::SeqState,
value: T,
) -> Result<(), Self::Error>;
fn serialize_seq_end(
&mut self,
state: Self::SeqState,
) -> Result<(), Self::Error>;
fn serialize_seq_fixed_size(
&mut self,
size: usize,
) -> Result<Self::SeqState, Self::Error>;
fn serialize_tuple(
&mut self,
len: usize,
) -> Result<Self::TupleState, Self::Error>;
fn serialize_tuple_elt<T: Serialize>(
&mut self,
state: &mut Self::TupleState,
value: T,
) -> Result<(), Self::Error>;
fn serialize_tuple_end(
&mut self,
state: Self::TupleState,
) -> Result<(), Self::Error>;
fn serialize_tuple_struct(
&mut self,
name: &'static str,
len: usize,
) -> Result<Self::TupleStructState, Self::Error>;
fn serialize_tuple_struct_elt<T: Serialize>(
&mut self,
state: &mut Self::TupleStructState,
value: T,
) -> Result<(), Self::Error>;
fn serialize_tuple_struct_end(
&mut self,
state: Self::TupleStructState,
) -> Result<(), Self::Error>;
fn serialize_tuple_variant(
&mut self,
name: &'static str,
variant_index: usize,
variant: &'static str,
len: usize,
) -> Result<Self::TupleVariantState, Self::Error>;
fn serialize_tuple_variant_elt<T: Serialize>(
&mut self,
state: &mut Self::TupleVariantState,
value: T,
) -> Result<(), Self::Error>;
fn serialize_tuple_variant_end(
&mut self,
state: Self::TupleVariantState,
) -> Result<(), Self::Error>;
fn serialize_map(
&mut self,
len: Option<usize>,
) -> Result<Self::MapState, Self::Error>;
fn serialize_map_key<T: Serialize>(
&mut self,
state: &mut Self::MapState,
key: T
) -> Result<(), Self::Error>;
fn serialize_map_value<T: Serialize>(
&mut self,
state: &mut Self::MapState,
value: T
) -> Result<(), Self::Error>;
fn serialize_map_end(
&mut self,
state: Self::MapState,
) -> Result<(), Self::Error>;
fn serialize_struct(
&mut self,
name: &'static str,
len: usize,
) -> Result<Self::StructState, Self::Error>;
fn serialize_struct_elt<V: Serialize>(
&mut self,
state: &mut Self::StructState,
key: &'static str,
value: V,
) -> Result<(), Self::Error>;
fn serialize_struct_end(
&mut self,
state: Self::StructState,
) -> Result<(), Self::Error>;
fn serialize_struct_variant(
&mut self,
name: &'static str,
variant_index: usize,
variant: &'static str,
len: usize,
) -> Result<Self::StructVariantState, Self::Error>;
fn serialize_struct_variant_elt<V: Serialize>(
&mut self,
state: &mut Self::StructVariantState,
key: &'static str,
value: V,
) -> Result<(), Self::Error>;
fn serialize_struct_variant_end(
&mut self,
state: Self::StructVariantState,
) -> Result<(), Self::Error>;
}