packet

Struct EmptyBuf

Source
pub struct EmptyBuf;
Expand description

An empty buffer.

An EmptyBuf is a buffer with 0 bytes of length or capacity. It implements all of the buffer traits (XxxBuffer and XxxBufferMut) and both buffer view traits (BufferView and BufferViewMut).

Trait Implementations§

Source§

impl AsMut<[u8]> for EmptyBuf

Source§

fn as_mut(&mut self) -> &mut [u8]

Converts this type into a mutable reference of the (usually inferred) input type.
Source§

impl AsRef<[u8]> for EmptyBuf

Source§

fn as_ref(&self) -> &[u8]

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl Buffer for EmptyBuf

Source§

fn parse_with_view<'a, ParseArgs, P: ParsablePacket<&'a [u8], ParseArgs>>( &'a mut self, args: ParseArgs, ) -> Result<(P, &'a [u8]), P::Error>

Like ParseBuffer::parse_with but additionally provides an un-structured view into the parsed data on successful parsing.
Source§

impl<'a> BufferView<&'a [u8]> for EmptyBuf

Source§

fn len(&self) -> usize

The length of the buffer’s body.
Source§

fn take_front(&mut self, n: usize) -> Option<&'a [u8]>

Takes n bytes from the front of the buffer’s body. Read more
Source§

fn take_back(&mut self, n: usize) -> Option<&'a [u8]>

Takes n bytes from the back of the buffer’s body. Read more
Source§

fn into_rest(self) -> &'a [u8]

Converts this view into a reference to the buffer’s body. Read more
Source§

fn is_empty(&self) -> bool

Is the buffer’s body empty?
Source§

fn take_rest_front(&mut self) -> B

Takes the rest of the buffer’s body from the front. Read more
Source§

fn take_rest_back(&mut self) -> B

Takes the rest of the buffer’s body from the back. Read more
Source§

fn take_byte_front(&mut self) -> Option<u8>

Takes a single byte of the buffer’s body from the front. Read more
Source§

fn take_byte_back(&mut self) -> Option<u8>

Takes a single byte of the buffer’s body from the back. Read more
Source§

fn peek_obj_front<T>(&mut self) -> Option<&T>
where T: FromBytes + KnownLayout + Immutable + Unaligned,

Peeks at an object at the front of the buffer’s body. Read more
Source§

fn take_obj_front<T>(&mut self) -> Option<Ref<B, T>>
where T: KnownLayout + Immutable + Unaligned,

Takes an object from the front of the buffer’s body. Read more
Source§

fn take_slice_front<T>(&mut self, n: usize) -> Option<Ref<B, [T]>>
where T: Immutable + Unaligned,

Takes a slice of objects from the front of the buffer’s body. Read more
Source§

fn peek_obj_back<T>(&mut self) -> Option<&T>
where T: FromBytes + KnownLayout + Immutable + Unaligned,

Peeks at an object at the back of the buffer’s body. Read more
Source§

fn take_obj_back<T>(&mut self) -> Option<Ref<B, T>>
where T: Immutable + KnownLayout + Unaligned,

Takes an object from the back of the buffer’s body. Read more
Source§

fn take_slice_back<T>(&mut self, n: usize) -> Option<Ref<B, [T]>>
where T: Immutable + Unaligned,

Takes a slice of objects from the back of the buffer’s body. Read more
Source§

impl<'a> BufferView<&'a mut [u8]> for EmptyBuf

Source§

fn len(&self) -> usize

The length of the buffer’s body.
Source§

fn take_front(&mut self, n: usize) -> Option<&'a mut [u8]>

Takes n bytes from the front of the buffer’s body. Read more
Source§

fn take_back(&mut self, n: usize) -> Option<&'a mut [u8]>

Takes n bytes from the back of the buffer’s body. Read more
Source§

fn into_rest(self) -> &'a mut [u8]

Converts this view into a reference to the buffer’s body. Read more
Source§

fn is_empty(&self) -> bool

Is the buffer’s body empty?
Source§

fn take_rest_front(&mut self) -> B

Takes the rest of the buffer’s body from the front. Read more
Source§

fn take_rest_back(&mut self) -> B

Takes the rest of the buffer’s body from the back. Read more
Source§

fn take_byte_front(&mut self) -> Option<u8>

Takes a single byte of the buffer’s body from the front. Read more
Source§

fn take_byte_back(&mut self) -> Option<u8>

Takes a single byte of the buffer’s body from the back. Read more
Source§

fn peek_obj_front<T>(&mut self) -> Option<&T>
where T: FromBytes + KnownLayout + Immutable + Unaligned,

Peeks at an object at the front of the buffer’s body. Read more
Source§

fn take_obj_front<T>(&mut self) -> Option<Ref<B, T>>
where T: KnownLayout + Immutable + Unaligned,

Takes an object from the front of the buffer’s body. Read more
Source§

fn take_slice_front<T>(&mut self, n: usize) -> Option<Ref<B, [T]>>
where T: Immutable + Unaligned,

Takes a slice of objects from the front of the buffer’s body. Read more
Source§

fn peek_obj_back<T>(&mut self) -> Option<&T>
where T: FromBytes + KnownLayout + Immutable + Unaligned,

Peeks at an object at the back of the buffer’s body. Read more
Source§

fn take_obj_back<T>(&mut self) -> Option<Ref<B, T>>
where T: Immutable + KnownLayout + Unaligned,

Takes an object from the back of the buffer’s body. Read more
Source§

fn take_slice_back<T>(&mut self, n: usize) -> Option<Ref<B, [T]>>
where T: Immutable + Unaligned,

Takes a slice of objects from the back of the buffer’s body. Read more
Source§

impl<'a> BufferViewMut<&'a mut [u8]> for EmptyBuf

Source§

fn take_front_zero(&mut self, n: usize) -> Option<B>

Takes n bytes from the front of the buffer’s body and zeroes them. Read more
Source§

fn take_back_zero(&mut self, n: usize) -> Option<B>

Takes n bytes from the back of the buffer’s body and zeroes them. Read more
Source§

fn take_rest_front_zero(self) -> B

Takes the rest of the buffer’s body from the front and zeroes it. Read more
Source§

fn take_rest_back_zero(self) -> B

Takes the rest of the buffer’s body from the back and zeroes it. Read more
Source§

fn into_rest_zero(self) -> B

Converts this view into a reference to the buffer’s body, and zeroes it. Read more
Source§

fn take_obj_front_zero<T>(&mut self) -> Option<Ref<B, T>>
where T: KnownLayout + Immutable + Unaligned,

Takes an object from the front of the buffer’s body and zeroes it. Read more
Source§

fn take_obj_back_zero<T>(&mut self) -> Option<Ref<B, T>>
where T: KnownLayout + Immutable + Unaligned,

Takes an object from the back of the buffer’s body and zeroes it. Read more
Source§

fn write_obj_front<T>(&mut self, obj: &T) -> Option<()>
where T: ?Sized + IntoBytes + Immutable,

Writes an object to the front of the buffer’s body, consuming the bytes. Read more
Source§

fn write_obj_back<T>(&mut self, obj: &T) -> Option<()>
where T: ?Sized + IntoBytes + Immutable,

Writes an object to the back of the buffer’s body, consuming the bytes. Read more
Source§

impl Clone for EmptyBuf

Source§

fn clone(&self) -> EmptyBuf

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 Debug for EmptyBuf

Source§

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

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

impl FragmentedBuffer for EmptyBuf

Source§

fn len(&self) -> usize

Gets the total length, in bytes, of this FragmentedBuffer.
Source§

fn with_bytes<R, F>(&self, f: F) -> R
where F: for<'macro_a, 'macro_b> FnOnce(FragmentedBytes<'macro_a, 'macro_b>) -> R,

Invokes a callback on a view into this buffer’s contents as FragmentedBytes.
Source§

fn to_flattened_vec(&self) -> Vec<u8>

Returns a flattened version of this buffer, copying its contents into a Vec.
Source§

fn is_empty(&self) -> bool

Returns true if this FragmentedBuffer is empty.
Source§

impl FragmentedBufferMut for EmptyBuf

Source§

fn with_bytes_mut<R, F>(&mut self, f: F) -> R
where F: for<'macro_a, 'macro_b> FnOnce(FragmentedBytesMut<'macro_a, 'macro_b>) -> R,

Invokes a callback on a mutable view into this buffer’s contents as FragmentedBytesMut.
Source§

fn zero_range<R>(&mut self, range: R)
where R: RangeBounds<usize>,

Sets all bytes in range to zero. Read more
Source§

fn copy_within<R: RangeBounds<usize>>(&mut self, src: R, dest: usize)

Copies elements from one part of the FragmentedBufferMut to another part of itself. Read more
Source§

fn copy_from<B: FragmentedBuffer>(&mut self, other: &B)

Copies all the bytes from another FragmentedBuffer other into self. Read more
Source§

impl GrowBuffer for EmptyBuf

Source§

fn with_parts<O, F>(&self, f: F) -> O
where F: for<'a, 'b> FnOnce(&'a [u8], FragmentedBytes<'a, 'b>, &'a [u8]) -> O,

Gets a view into the parts of this GrowBuffer. Read more
Source§

fn grow_front(&mut self, n: usize)

Grows the front of the body towards Growf the buffer. Read more
Source§

fn grow_back(&mut self, n: usize)

Grows the back of the body towards the end of the buffer. Read more
Source§

fn capacity(&self) -> usize

The capacity of the buffer. Read more
Source§

fn prefix_len(&self) -> usize

The length of the prefix.
Source§

fn suffix_len(&self) -> usize

The length of the suffix.
Source§

fn reset(&mut self)

Resets the body to be equal to the entire buffer. Read more
Source§

fn undo_parse(&mut self, meta: ParseMetadata)

Undoes the effects of a previous parse in preparation for serialization. Read more
Source§

impl GrowBufferMut for EmptyBuf

Source§

fn with_parts_mut<O, F>(&mut self, f: F) -> O
where F: for<'a, 'b> FnOnce(&'a mut [u8], FragmentedBytesMut<'a, 'b>, &'a mut [u8]) -> O,

Gets a mutable view into the parts of this GrowBufferMut. Read more
Source§

fn grow_front_zero(&mut self, n: usize)

Extends the front of the body towards the beginning of the buffer, zeroing the new bytes. Read more
Source§

fn grow_back_zero(&mut self, n: usize)

Extends the back of the body towards the end of the buffer, zeroing the new bytes. Read more
Source§

fn reset_zero(&mut self)

Resets the body to be equal to the entire buffer, zeroing the new bytes. Read more
Source§

impl ParseBuffer for EmptyBuf

Source§

fn parse_with<'a, ParseArgs, P: ParsablePacket<&'a [u8], ParseArgs>>( &'a mut self, args: ParseArgs, ) -> Result<P, P::Error>

Parses a packet with arguments. Read more
Source§

fn parse<'a, P: ParsablePacket<&'a [u8], ()>>( &'a mut self, ) -> Result<P, P::Error>

Parses a packet from the body. Read more
Source§

impl ParseBufferMut for EmptyBuf

Source§

fn parse_with_mut<'a, ParseArgs, P: ParsablePacket<&'a mut [u8], ParseArgs>>( &'a mut self, args: ParseArgs, ) -> Result<P, P::Error>

Parses a mutable packet with arguments. Read more
Source§

fn parse_mut<'a, P: ParsablePacket<&'a mut [u8], ()>>( &'a mut self, ) -> Result<P, P::Error>

Parses a mutable packet from the body. Read more
Source§

impl PartialEq for EmptyBuf

Source§

fn eq(&self, other: &EmptyBuf) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl ShrinkBuffer for EmptyBuf

Source§

fn shrink_front(&mut self, n: usize)

Shrinks the front of the body towards the end of the buffer. Read more
Source§

fn shrink_back(&mut self, n: usize)

Shrinks the back of the body towards the beginning of the buffer. Read more
Source§

fn shrink_front_to(&mut self, len: usize)

Shrinks the buffer to be no larger than len bytes, consuming from the front. Read more
Source§

fn shrink_back_to(&mut self, len: usize)

Shrinks the buffer to be no larger than len bytes, consuming from the back. Read more
Source§

fn shrink<R: RangeBounds<usize>>(&mut self, range: R)

Shrinks the body. Read more
Source§

impl ContiguousBuffer for EmptyBuf

Source§

impl Copy for EmptyBuf

Source§

impl Eq for EmptyBuf

Source§

impl StructuralPartialEq for EmptyBuf

Auto Trait Implementations§

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<O, B> AsFragmentedByteSlice<B> for O
where B: Fragment, O: AsMut<[B]>,

Source§

fn as_fragmented_byte_slice(&mut self) -> FragmentedByteSlice<'_, B>

Generates a FragmentedByteSlice view of self.
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<B> Serializer for B

Source§

type Buffer = B

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

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

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

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

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<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.
Source§

impl<B> BufferMut for B

Source§

impl<B> ContiguousBufferMut for B

Source§

impl<B> ReusableBuffer for B