ElementIdRange

Struct ElementIdRange 

Source
pub struct ElementIdRange {
    pub first: u8,
    pub last: u8,
}
Expand description

An utility structure for storing ranges of element’s ids. It provides way of converting between element id (with optional sub-id) and exposed id.

This structure is small and therefore can be copied.

Fields§

§first: u8§last: u8

Implementations§

Source§

impl ElementIdRange

Source

pub const fn new(first: u8, last: u8) -> Self

Source

pub const fn slots_count(self) -> u8

Returns the number of slots in this range.

Source

pub const fn sub_slots_count(self, exposed_count: u16) -> u8

Returns the number of slots that requires a sub-id. These slots are starting from the end of the range. For example, if this function returns 1, this means that the last slot (.last), if used, will be followed by a sub-id.

You must given the total number of exposed ids, because the presence of sub-id depends on how exposed ids can fit in the id range.

Source

pub const fn full_slots_count(self, exposed_count: u16) -> u8

Returns the number of full slots that don’t require a sub-id. This is the opposite of sub_slots_count, read its documentation.

Source

pub fn from_exposed_id( self, exposed_count: u16, exposed_id: u16, ) -> (u8, Option<u8>)

Get the element’s id and optional sub-id from the given exposed id and total count of exposed ids.

Source

pub fn to_exposed_id_checked( self, exposed_count: u16, element_id: u8, ) -> Option<u16>

Get the exposed id from an element, but only return some exposed id if it fits into

Source

pub fn to_exposed_id( self, exposed_count: u16, element_id: u8, sub_id_getter: impl FnOnce() -> u8, ) -> u16

Get the exposed id from an element id and optionally a sub-id, which should be lazily provided with a closure.

Trait Implementations§

Source§

impl Clone for ElementIdRange

Source§

fn clone(&self) -> ElementIdRange

Returns a duplicate 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 ElementIdRange

Source§

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

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

impl PartialEq for ElementIdRange

Source§

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

Source§

impl Eq for ElementIdRange

Source§

impl StructuralPartialEq for ElementIdRange

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, dest: *mut u8)

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

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
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<T> Same for T

Source§

type Output = T

Should always be Self
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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V