Skip to main content

EmptyBuf

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>(&self) -> Option<&T>

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>>

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

fn take_owned_obj_front<T>(&mut self) -> Option<T>
where T: FromBytes,

Takes an owned copy of 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>

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>>

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

fn take_owned_obj_back<T>(&mut self) -> Option<T>
where T: FromBytes,

Takes an owned copy of 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>(&self) -> Option<&T>

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>>

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

fn take_owned_obj_front<T>(&mut self) -> Option<T>
where T: FromBytes,

Takes an owned copy of 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>

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>>

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

fn take_owned_obj_back<T>(&mut self) -> Option<T>
where T: FromBytes,

Takes an owned copy of 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>>

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>>

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§

fn write_bytes_front_allow_partial(&mut self, bytes: &[u8]) -> usize

Writes specified bytes to the front of the buffer. Read more
Source§

impl Clone for EmptyBuf

Source§

fn clone(&self) -> EmptyBuf

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl ContiguousBuffer for EmptyBuf

Source§

impl Copy for EmptyBuf

Source§

impl Debug for EmptyBuf

Source§

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

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

impl Eq for EmptyBuf

Source§

impl FragmentedBuffer for EmptyBuf

Source§

fn len(&self) -> usize

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

fn with_bytes<'macro_a, R, F>(&'macro_a self, f: F) -> R
where F: for<'macro_b> FnOnce(FragmentedBytes<'macro_b, 'macro_a>) -> 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<'macro_a, R, F>(&'macro_a mut self, f: F) -> R
where F: for<'macro_b> FnOnce(FragmentedBytesMut<'macro_b, 'macro_a>) -> 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<'a, O, F>(&'a self, f: F) -> O
where F: for<'b> FnOnce(&'a [u8], FragmentedBytes<'b, 'a>, &'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<'a, O, F>(&'a mut self, f: F) -> O
where F: for<'b> FnOnce(&'a mut [u8], FragmentedBytesMut<'b, 'a>, &'a mut [u8]) -> O,

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

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

Gets a mutable view into the entirety 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 (const: unstable) · 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 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<B> BufferMut for B

Source§

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

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

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

impl<B> ContiguousBufferMut for B

Source§

impl<C, O> DynamicPartialSerializer<C> for O
where C: SerializationContext, O: DynamicPartialSerializerInner<C>,

Source§

impl<C, O> DynamicSerializer<C> for O
where C: SerializationContext, O: DynamicSerializerInner<C>,

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> NestableSerializer for B

Source§

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

Encapsulates this Serializer in a 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<C, B> PartialSerializer<C> for B

Source§

fn partial_serialize_new_buf<BB, A>( &self, _context: &mut C, constraints: PacketConstraints, alloc: A, ) -> Result<(BB, usize), SerializeError<<A as LayoutBufferAlloc<BB>>::Error>>
where BB: GrowBufferMut, A: LayoutBufferAlloc<BB>,

Serializes the headers into a new buffer allocated used alloc. Read more
Source§

fn partial_serialize<B: GrowBufferMut + ContiguousBuffer, A: LayoutBufferAlloc<B>>( &self, context: &mut C, alloc: A, ) -> Result<PartialSerializeResult<'_, B>, SerializeError<A::Error>>

If the packet is already serialized then returns the whole seialized packet as PartialSerializeResult::Slice. Otherwise serializes the headers into a new buffer returned as PartialSerializeResult::NewBuffer.
Source§

impl<B> ReusableBuffer for B

Source§

impl<C, B> Serializer<C> for B

Source§

type Buffer = B

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

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

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

fn serialize_new_buf<BB, A>( &self, _context: &mut C, constraints: PacketConstraints, alloc: A, ) -> Result<BB, SerializeError<<A as LayoutBufferAlloc<BB>>::Error>>
where BB: GrowBufferMut, A: LayoutBufferAlloc<BB>,

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

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

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

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

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

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

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