packet::serialize

Struct TruncatingSerializer

Source
pub struct TruncatingSerializer<B> { /* private fields */ }
Expand description

A Serializer that truncates its body if it would exceed a size limit.

TruncatingSerializer wraps a buffer, and implements Serializer. Unlike the blanket impl of Serializer for B: GrowBuffer + ShrinkBuffer, if the buffer’s body exceeds the size limit constraint passed to Serializer::serialize, the body is truncated to fit.

Note that this does not guarantee that size limit exceeded errors will not occur. The size limit may be small enough that the encapsulating headers alone exceed the size limit. There may also be a minimum body length constraint which is larger than the size limit.

Implementations§

Source§

impl<B> TruncatingSerializer<B>

Source

pub fn new(buffer: B, direction: TruncateDirection) -> TruncatingSerializer<B>

Constructs a new TruncatingSerializer.

Trait Implementations§

Source§

impl<B: Clone> Clone for TruncatingSerializer<B>

Source§

fn clone(&self) -> TruncatingSerializer<B>

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<B: Debug> Debug for TruncatingSerializer<B>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<B: GrowBuffer + ShrinkBuffer> Serializer for TruncatingSerializer<B>

Source§

type Buffer = B

The type of buffers returned from serialization methods on this trait.
Source§

fn serialize<BB: GrowBufferMut, P: BufferProvider<B, BB>>( self, outer: PacketConstraints, provider: P, ) -> Result<BB, (SerializeError<P::Error>, Self)>

Serializes this Serializer, producing a buffer. Read more
Source§

fn serialize_new_buf<BB: ReusableBuffer, A: BufferAlloc<BB>>( &self, outer: PacketConstraints, alloc: A, ) -> Result<BB, SerializeError<A::Error>>

Serializes the data into a new buffer without consuming self. Read more
Source§

fn serialize_vec( self, outer: 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 more
Source§

fn serialize_no_alloc( self, outer: PacketConstraints, ) -> Result<Self::Buffer, (SerializeError<BufferTooShortError>, Self)>
where Self::Buffer: ReusableBuffer,

Serializes this Serializer, failing if the existing buffer is not large enough. Read more
Source§

fn serialize_outer<B: GrowBufferMut, P: BufferProvider<Self::Buffer, B>>( self, provider: P, ) -> Result<B, (SerializeError<P::Error>, Self)>

Serializes this Serializer as the outermost packet. Read more
Source§

fn serialize_vec_outer( self, ) -> 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 more
Source§

fn serialize_no_alloc_outer( self, ) -> 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 more
Source§

fn encapsulate<B>(self, outer: B) -> Nested<Self, B>

Encapsulates this Serializer in another packet, producing a new Serializer. Read more
Source§

fn with_size_limit(self, limit: usize) -> Nested<Self, LimitedSizePacketBuilder>

Creates a new Serializer which will enforce a size limit. Read more
Source§

impl<B: Copy> Copy for TruncatingSerializer<B>

Auto Trait Implementations§

§

impl<B> Freeze for TruncatingSerializer<B>
where B: Freeze,

§

impl<B> RefUnwindSafe for TruncatingSerializer<B>
where B: RefUnwindSafe,

§

impl<B> Send for TruncatingSerializer<B>
where B: Send,

§

impl<B> Sync for TruncatingSerializer<B>
where B: Sync,

§

impl<B> Unpin for TruncatingSerializer<B>
where B: Unpin,

§

impl<B> UnwindSafe for TruncatingSerializer<B>
where B: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.