pub struct DynSerializer<'a, C: SerializationContext>(/* private fields */);Expand description
A type that provides Serializer via dynamic dispatch.
See discussion on DynamicSerializer for when dynamically dispatched
serializers can be beneficial.
Implementations§
Source§impl<'a, C: SerializationContext> DynSerializer<'a, C>
impl<'a, C: SerializationContext> DynSerializer<'a, C>
Sourcepub fn new<S: Serializer<C>>(s: &'a S) -> Self
pub fn new<S: Serializer<C>>(s: &'a S) -> Self
Creates a new DynSerializer from a borrow to a concrete serializer.
Sourcepub fn new_dyn(s: &'a dyn DynamicSerializer<C>) -> Self
pub fn new_dyn(s: &'a dyn DynamicSerializer<C>) -> Self
Creates a new DynSerializer from a fat DynamicSerializer pointer.
Trait Implementations§
Source§impl<'a, C: Clone + SerializationContext> Clone for DynSerializer<'a, C>
impl<'a, C: Clone + SerializationContext> Clone for DynSerializer<'a, C>
Source§fn clone(&self) -> DynSerializer<'a, C>
fn clone(&self) -> DynSerializer<'a, C>
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<C: SerializationContext> NestableSerializer for DynSerializer<'_, C>
impl<C: SerializationContext> NestableSerializer for DynSerializer<'_, C>
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> Serializer<C> for DynSerializer<'_, C>
impl<C: SerializationContext> Serializer<C> for DynSerializer<'_, C>
Source§fn serialize<B: GrowBufferMut, P: BufferProvider<Self::Buffer, B>>(
self,
context: &mut C,
constraints: PacketConstraints,
provider: P,
) -> Result<B, (SerializeError<P::Error>, Self)>
fn serialize<B: GrowBufferMut, P: BufferProvider<Self::Buffer, B>>( self, context: &mut C, constraints: PacketConstraints, provider: P, ) -> Result<B, (SerializeError<P::Error>, Self)>
Serializes this
Serializer, producing a buffer. Read moreSource§fn serialize_new_buf<B: GrowBufferMut, A: LayoutBufferAlloc<B>>(
&self,
context: &mut C,
constraints: PacketConstraints,
alloc: A,
) -> Result<B, SerializeError<A::Error>>
fn serialize_new_buf<B: GrowBufferMut, A: LayoutBufferAlloc<B>>( &self, context: &mut C, constraints: PacketConstraints, alloc: A, ) -> Result<B, SerializeError<A::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.impl<'a, C: Copy + SerializationContext> Copy for DynSerializer<'a, C>
Auto Trait Implementations§
impl<'a, C> Freeze for DynSerializer<'a, C>
impl<'a, C> !RefUnwindSafe for DynSerializer<'a, C>
impl<'a, C> !Send for DynSerializer<'a, C>
impl<'a, C> !Sync for DynSerializer<'a, C>
impl<'a, C> Unpin for DynSerializer<'a, C>
impl<'a, C> UnsafeUnpin for DynSerializer<'a, C>
impl<'a, C> !UnwindSafe for DynSerializer<'a, C>
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