pub trait VariantEncoder {
type Cx: ?Sized + Context;
type Ok;
type EncodeTag<'this>: Encoder<Cx = Self::Cx, Ok = Self::Ok, Error = <Self::Cx as Context>::Error, Mode = <Self::Cx as Context>::Mode>
where Self: 'this;
type EncodeData<'this>: Encoder<Cx = Self::Cx, Ok = Self::Ok, Error = <Self::Cx as Context>::Error, Mode = <Self::Cx as Context>::Mode>
where Self: 'this;
// Required methods
fn encode_tag(
&mut self,
) -> Result<Self::EncodeTag<'_>, <Self::Cx as Context>::Error>;
fn encode_data(
&mut self,
) -> Result<Self::EncodeData<'_>, <Self::Cx as Context>::Error>;
fn finish_variant(self) -> Result<Self::Ok, <Self::Cx as Context>::Error>;
// Provided method
fn insert_variant<T, V>(
self,
tag: T,
value: V,
) -> Result<Self::Ok, <Self::Cx as Context>::Error>
where Self: Sized,
T: Encode<<Self::Cx as Context>::Mode>,
V: Encode<<Self::Cx as Context>::Mode> { ... }
}
Expand description
Trait governing how to encode a variant.
Required Associated Types§
Required Methods§
Sourcefn encode_tag(
&mut self,
) -> Result<Self::EncodeTag<'_>, <Self::Cx as Context>::Error>
fn encode_tag( &mut self, ) -> Result<Self::EncodeTag<'_>, <Self::Cx as Context>::Error>
Return the encoder for the first element in the variant.
Sourcefn encode_data(
&mut self,
) -> Result<Self::EncodeData<'_>, <Self::Cx as Context>::Error>
fn encode_data( &mut self, ) -> Result<Self::EncodeData<'_>, <Self::Cx as Context>::Error>
Return encoder for the second element in the variant.
Provided Methods§
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.