pub trait TypedWrite: Sized {
type TupleWriter: WriteTuple<Parent = Self>;
type StructWriter: WriteStruct<Parent = Self>;
type UnionDefiner: DefineUnion<Parent = Self>;
fn write_union<T: StrictUnion>(
self,
inner: impl FnOnce(Self::UnionDefiner) -> Result<Self>
) -> Result<Self>;
fn write_enum<T: StrictEnum>(self, value: T) -> Result<Self>
where
u8: From<T>;
fn write_tuple<T: StrictTuple>(
self,
inner: impl FnOnce(Self::TupleWriter) -> Result<Self>
) -> Result<Self>;
fn write_struct<T: StrictStruct>(
self,
inner: impl FnOnce(Self::StructWriter) -> Result<Self>
) -> Result<Self>;
fn write_newtype<T: StrictTuple>(
self,
value: &impl StrictEncode
) -> Result<Self> { ... }
}