pub struct AlignedRecordSequenceBuilder<R, I> { /* private fields */ }
Expand description
A builder capable of serializing a sequence of aligned records.
An AlignedRecordSequenceBuilder
is instantiated with an Iterator
that
provides AlignedRecordBuilder
s to be serialized. The item produced by
the iterator can be any type which implements Borrow<R>
for R: AlignedRecordBuilder
.
AlignedRecordSequenceBuilder
implements InnerPacketBuilder
.
Implementations§
Source§impl<R, I> AlignedRecordSequenceBuilder<R, I>
impl<R, I> AlignedRecordSequenceBuilder<R, I>
Sourcepub fn new(start_pos: usize, records: I) -> Self
pub fn new(start_pos: usize, records: I) -> Self
Creates a new AlignedRecordSequenceBuilder
with given records
and
start_pos
.
records
must produce the same sequence of values from every iteration,
even if cloned. See RecordSequenceBuilder
for more details.
Alignment is calculated relative to the beginning of a virtual space of
bytes. If non-zero, start_pos
instructs the serializer to consider the
buffer passed to serialize_into
to start at the byte start_pos
within this virtual space, and to calculate alignment and padding
accordingly. For example, in the IPv6 Hop-by-Hop extension header, a
fixed header of two bytes precedes that extension header’s options, but
alignment is calculated relative to the beginning of the extension
header, not relative to the beginning of the options. Thus, when
constructing an AlignedRecordSequenceBuilder
to serialize those
options, start_pos
would be 2.
Source§impl<R, I> AlignedRecordSequenceBuilder<R, I>
impl<R, I> AlignedRecordSequenceBuilder<R, I>
Sourcepub fn serialized_len(&self) -> usize
pub fn serialized_len(&self) -> usize
Returns the total length, in bytes, of the serialized records contained
within self
.
Note that this length includes all padding required to ensure that all records satisfy their alignment requirements.
Sourcepub fn serialize_into(&self, buffer: &mut [u8])
pub fn serialize_into(&self, buffer: &mut [u8])
Serializes all the records contained within self
into the given
buffer.
§Panics
serialize_into
expects that buffer
has enough bytes to serialize the
contained records (as obtained from serialized_len
), otherwise it’s
considered a violation of the API contract and the call may panic.
Trait Implementations§
Source§impl<R: Clone, I: Clone> Clone for AlignedRecordSequenceBuilder<R, I>
impl<R: Clone, I: Clone> Clone for AlignedRecordSequenceBuilder<R, I>
Source§fn clone(&self) -> AlignedRecordSequenceBuilder<R, I>
fn clone(&self) -> AlignedRecordSequenceBuilder<R, I>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreAuto Trait Implementations§
impl<R, I> Freeze for AlignedRecordSequenceBuilder<R, I>where
I: Freeze,
impl<R, I> RefUnwindSafe for AlignedRecordSequenceBuilder<R, I>where
I: RefUnwindSafe,
R: RefUnwindSafe,
impl<R, I> Send for AlignedRecordSequenceBuilder<R, I>
impl<R, I> Sync for AlignedRecordSequenceBuilder<R, I>
impl<R, I> Unpin for AlignedRecordSequenceBuilder<R, I>
impl<R, I> UnwindSafe for AlignedRecordSequenceBuilder<R, I>where
I: UnwindSafe,
R: UnwindSafe,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)