Struct VarHeader

Source
pub struct VarHeader {
    pub key: VarKey,
    pub seq_no: VarSeq,
}
Expand description

A variably sized message header

NOTE: We use the standard PartialEq here as it will do the correct things.

Sequence numbers must be EXACTLY the same, and keys must be equivalent when degraded to the smaller of the two.

We DO NOT impl Serialize/Deserialize for this type because we use non-postcard-compatible format (externally tagged)

Fields§

§key: VarKey

The variably sized Key

§seq_no: VarSeq

The variably sized Sequence Number

Implementations§

Source§

impl VarHeader

Source

pub const KEY_ONE_BITS: u8 = 0u8

Bits for a key of ONE byte

Source

pub const KEY_TWO_BITS: u8 = 64u8

Bits for a key of TWO bytes

Source

pub const KEY_FOUR_BITS: u8 = 128u8

Bits for a key of FOUR bytes

Source

pub const KEY_EIGHT_BITS: u8 = 192u8

Bits for a key of EIGHT bytes

Source

pub const KEY_MASK_BITS: u8 = 192u8

Mask bits

Source

pub const SEQ_ONE_BITS: u8 = 0u8

Bits for a sequence number of ONE bytes

Source

pub const SEQ_TWO_BITS: u8 = 16u8

Bits for a sequence number of TWO bytes

Source

pub const SEQ_FOUR_BITS: u8 = 32u8

Bits for a sequence number of FOUR bytes

Source

pub const SEQ_MASK_BITS: u8 = 48u8

Mask bits

Source

pub const VER_ZERO_BITS: u8 = 0u8

Bits for a version number of ZERO

Source

pub const VER_MASK_BITS: u8 = 15u8

Mask bits

Source

pub fn write_to_vec(&self) -> Vec<u8>

Encode the header to a Vec of bytes

Source

pub fn write_to_slice<'a>( &self, buf: &'a mut [u8], ) -> Option<(&'a mut [u8], &'a mut [u8])>

Attempt to write the header to the given slice

If the slice is large enough, a Some will be returned with the bytes used to encode the header, as well as the remaining unused bytes.

If the slice is not large enough, a None will be returned, and some bytes of the buffer may have been modified.

Source

pub fn take_from_slice(buf: &[u8]) -> Option<(Self, &[u8])>

Attempt to decode a header from the given bytes.

If a well-formed header was found, a Some will be returned with the decoded header and unused remaining bytes.

If no well-formed header was found, a None will be returned.

Trait Implementations§

Source§

impl Clone for VarHeader

Source§

fn clone(&self) -> VarHeader

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 VarHeader

Source§

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

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

impl PartialEq for VarHeader

Source§

fn eq(&self, other: &VarHeader) -> 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 Copy for VarHeader

Source§

impl StructuralPartialEq for VarHeader

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

🔬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> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more