use erased_serde::{Deserializer, Serializer};
use http::HeaderValue;
pub trait Encoding {
fn content_type(&self) -> HeaderValue;
fn serializer<'a>(&self, w: &'a mut Vec<u8>) -> Box<dyn SerializerState<'a> + 'a>;
fn deserializer<'a>(&self, buf: &'a [u8]) -> Box<dyn DeserializerState<'a> + 'a>;
}
pub trait SerializerState<'a> {
fn serializer<'b, 'c>(&'b mut self) -> Box<dyn Serializer + 'c>
where
'a: 'c,
'b: 'c;
}
pub trait DeserializerState<'de> {
fn deserializer<'a>(&'a mut self) -> Box<dyn Deserializer<'de> + 'a>;
}