Struct de_net::connection::databuf::Slot

source ·
struct Slot {
    used: bool,
    ordinal: usize,
    data_offset: usize,
    len: usize,
}
Expand description

A single slot in a bytes ring-buffer.

A slot corresponds to a single (ring-like) contiguous part of the data buffer. Every byte (position) in the data buffer belongs to exactly one slot (i.e. no gaps and no overlaps).

A slot may be used or unused. Unused slots are pruned once they reach end of the buffer.

Fields§

§used: bool

True if the slot is no longer used and may be pruned.

§ordinal: usize

Unique number of the slot. Each new slot is assigned an ordinal, which is a wrapping increment of the ordinal of the previous slot, or 0 if there is no slots in the buffer at the time of slot creation.

Given a slot a and the first slot in the slots buffer f, index of slot a is a.ordinal.wrapping_sub(f.ordinal).

§data_offset: usize

Bytes offset of the slot since the last time the buffer was empty.

Due to the fact that slots are pruned, this number may not correspond to the actual offset from the beginning of the data buffer. Offsets are modular over the maximum of usize (wrapping versions of arithmetic operations should be used).

Wrapping difference between data offsets of two (nearby) slots corresponds to the distance of the slots inside the data buffer.

§len: usize

Size (number of bytes) of the slot in the data buffer.

Auto Trait Implementations§

§

impl Freeze for Slot

§

impl RefUnwindSafe for Slot

§

impl Send for Slot

§

impl Sync for Slot

§

impl Unpin for Slot

§

impl UnwindSafe for Slot

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> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

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

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

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, U> TryFrom<U> for T
where U: Into<T>,

§

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

§

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

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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