pub trait InnerPacketBuilder {
// Required methods
fn bytes_len(&self) -> usize;
fn serialize(&self, buffer: &mut [u8]);
// Provided methods
fn into_serializer(self) -> InnerSerializer<Self, EmptyBuf>
where Self: Sized { ... }
fn into_serializer_with<B: ShrinkBuffer>(
self,
buffer: B,
) -> InnerSerializer<Self, B>
where Self: Sized { ... }
}Expand description
A builder capable of serializing packets - which do not encapsulate other packets - into an existing buffer.
An InnerPacketBuilder describes a packet, and is capable of serializing
that packet into an existing buffer via the serialize method. Unlike the
PacketBuilder trait, it describes a packet which does not encapsulate
other packets.
§Notable implementations
InnerPacketBuilder is implemented for &[u8], &mut [u8], and Vec<u8>
by treating the contents of the slice/Vec as the contents of the packet to
be serialized.
Required Methods§
Sourcefn serialize(&self, buffer: &mut [u8])
fn serialize(&self, buffer: &mut [u8])
Serializes this packet into an existing buffer.
serialize is called with a buffer of length self.bytes_len(), and is
responsible for serializing the packet into the buffer.
§Security
All of the bytes of the buffer should be initialized, even if only to zero, in order to avoid leaking the contents of packets previously stored in the same buffer.
§Panics
May panic if buffer.len() != self.bytes_len().
Provided Methods§
Sourcefn into_serializer(self) -> InnerSerializer<Self, EmptyBuf>where
Self: Sized,
fn into_serializer(self) -> InnerSerializer<Self, EmptyBuf>where
Self: Sized,
Converts this InnerPacketBuilder into a Serializer.
into_serializer is like into_serializer_with, except that no
buffer is provided for reuse in serialization.
Sourcefn into_serializer_with<B: ShrinkBuffer>(
self,
buffer: B,
) -> InnerSerializer<Self, B>where
Self: Sized,
fn into_serializer_with<B: ShrinkBuffer>(
self,
buffer: B,
) -> InnerSerializer<Self, B>where
Self: Sized,
Converts this InnerPacketBuilder into a Serializer with a buffer
that can be used for serialization.
into_serializer_with consumes a buffer and converts self into a type
which implements Serialize by treating it as the innermost body to be
contained within any encapsulating PacketBuilders. During
serialization, buffer will be provided to the BufferProvider,
allowing it to reuse the buffer for serialization and avoid allocating a
new one if possible.
buffer will have its body shrunk to be zero bytes before the
InnerSerializer is constructed.