pub enum EitherSerializer<A, B> {
A(A),
B(B),
}Expand description
Either of two serializers.
An EitherSerializer wraps one of two different serializer types.
Variants§
Trait Implementations§
Source§impl<A: NestableSerializer, B: NestableSerializer> NestableSerializer for EitherSerializer<A, B>
impl<A: NestableSerializer, B: NestableSerializer> NestableSerializer for EitherSerializer<A, B>
Source§fn wrap_in<B: NestablePacketBuilder>(self, outer: B) -> Nested<Self, B>
fn wrap_in<B: NestablePacketBuilder>(self, outer: B) -> Nested<Self, B>
Source§fn with_size_limit(self, limit: usize) -> Nested<Self, LimitedSizePacketBuilder>
fn with_size_limit(self, limit: usize) -> Nested<Self, LimitedSizePacketBuilder>
Creates a new
Serializer which will enforce a size limit. Read moreSource§impl<C: SerializationContext, A: PartialSerializer<C>, B: PartialSerializer<C>> PartialSerializer<C> for EitherSerializer<A, B>
impl<C: SerializationContext, A: PartialSerializer<C>, B: PartialSerializer<C>> PartialSerializer<C> for EitherSerializer<A, B>
Source§fn partial_serialize(
&self,
context: &mut C,
constraints: PacketConstraints,
buffer: &mut [u8],
) -> Result<PartialSerializeResult, SerializeError<Never>>
fn partial_serialize( &self, context: &mut C, constraints: PacketConstraints, buffer: &mut [u8], ) -> Result<PartialSerializeResult, SerializeError<Never>>
Serializes the head of the packet to the specified
buffer. Read moreSource§impl<C: SerializationContext, A: Serializer<C>, B: Serializer<C, Buffer = A::Buffer>> Serializer<C> for EitherSerializer<A, B>
impl<C: SerializationContext, A: Serializer<C>, B: Serializer<C, Buffer = A::Buffer>> Serializer<C> for EitherSerializer<A, B>
Source§type Buffer = <A as Serializer<C>>::Buffer
type Buffer = <A as Serializer<C>>::Buffer
The type of buffers returned from serialization methods on this trait.
Source§fn serialize<TB: GrowBufferMut, P: BufferProvider<Self::Buffer, TB>>(
self,
context: &mut C,
constraints: PacketConstraints,
provider: P,
) -> Result<TB, (SerializeError<P::Error>, Self)>
fn serialize<TB: GrowBufferMut, P: BufferProvider<Self::Buffer, TB>>( self, context: &mut C, constraints: PacketConstraints, provider: P, ) -> Result<TB, (SerializeError<P::Error>, Self)>
Serializes this
Serializer, producing a buffer. Read moreSource§fn serialize_new_buf<TB: GrowBufferMut, BA: LayoutBufferAlloc<TB>>(
&self,
context: &mut C,
outer: PacketConstraints,
alloc: BA,
) -> Result<TB, SerializeError<BA::Error>>
fn serialize_new_buf<TB: GrowBufferMut, BA: LayoutBufferAlloc<TB>>( &self, context: &mut C, outer: PacketConstraints, alloc: BA, ) -> Result<TB, SerializeError<BA::Error>>
Serializes the data into a new buffer without consuming
self. Read moreSource§fn serialize_vec(
self,
context: &mut C,
constraints: PacketConstraints,
) -> Result<Either<Self::Buffer, Buf<Vec<u8>>>, (SerializeError<Never>, Self)>where
Self::Buffer: ReusableBuffer,
fn serialize_vec(
self,
context: &mut C,
constraints: PacketConstraints,
) -> Result<Either<Self::Buffer, Buf<Vec<u8>>>, (SerializeError<Never>, Self)>where
Self::Buffer: ReusableBuffer,
Serializes this
Serializer, allocating a Buf<Vec<u8>> if the
contained buffer isn’t large enough. Read moreSource§fn serialize_no_alloc(
self,
context: &mut C,
constraints: PacketConstraints,
) -> Result<Self::Buffer, (SerializeError<BufferTooShortError>, Self)>where
Self::Buffer: ReusableBuffer,
fn serialize_no_alloc(
self,
context: &mut C,
constraints: PacketConstraints,
) -> Result<Self::Buffer, (SerializeError<BufferTooShortError>, Self)>where
Self::Buffer: ReusableBuffer,
Serializes this
Serializer, failing if the existing buffer is not
large enough. Read moreSource§fn serialize_outer<B: GrowBufferMut, P: BufferProvider<Self::Buffer, B>>(
self,
context: &mut C,
provider: P,
) -> Result<B, (SerializeError<P::Error>, Self)>
fn serialize_outer<B: GrowBufferMut, P: BufferProvider<Self::Buffer, B>>( self, context: &mut C, provider: P, ) -> Result<B, (SerializeError<P::Error>, Self)>
Serializes this
Serializer as the outermost packet. Read moreSource§fn serialize_vec_outer(
self,
context: &mut C,
) -> Result<Either<Self::Buffer, Buf<Vec<u8>>>, (SerializeError<Never>, Self)>where
Self::Buffer: ReusableBuffer,
fn serialize_vec_outer(
self,
context: &mut C,
) -> Result<Either<Self::Buffer, Buf<Vec<u8>>>, (SerializeError<Never>, Self)>where
Self::Buffer: ReusableBuffer,
Serializes this
Serializer as the outermost packet, allocating a
Buf<Vec<u8>> if the contained buffer isn’t large enough. Read moreSource§fn serialize_no_alloc_outer(
self,
context: &mut C,
) -> Result<Self::Buffer, (SerializeError<BufferTooShortError>, Self)>where
Self::Buffer: ReusableBuffer,
fn serialize_no_alloc_outer(
self,
context: &mut C,
) -> Result<Self::Buffer, (SerializeError<BufferTooShortError>, Self)>where
Self::Buffer: ReusableBuffer,
Serializes this
Serializer as the outermost packet, failing if the
existing buffer is not large enough. Read moreSource§fn serialize_vec_outer_no_reuse(
&self,
context: &mut C,
) -> Result<Buf<Vec<u8>>, SerializeError<Never>>
fn serialize_vec_outer_no_reuse( &self, context: &mut C, ) -> Result<Buf<Vec<u8>>, SerializeError<Never>>
Like
Serializer::serialize_vec_outer, but never attempts to reuse
the underlying buffer.Auto Trait Implementations§
impl<A, B> Freeze for EitherSerializer<A, B>
impl<A, B> RefUnwindSafe for EitherSerializer<A, B>where
A: RefUnwindSafe,
B: RefUnwindSafe,
impl<A, B> Send for EitherSerializer<A, B>
impl<A, B> Sync for EitherSerializer<A, B>
impl<A, B> Unpin for EitherSerializer<A, B>
impl<A, B> UnsafeUnpin for EitherSerializer<A, B>where
A: UnsafeUnpin,
B: UnsafeUnpin,
impl<A, B> UnwindSafe for EitherSerializer<A, B>where
A: UnwindSafe,
B: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more