Skip to main content

LayerBitset

Struct LayerBitset 

Source
pub struct LayerBitset(/* private fields */);
Expand description

Fixed-capacity bitset of layers for modifier / conditional-layer state.

Bit i corresponds to layer index i. Capacity is Self::BITS layers (indices 0..=[MAX_BITSET_LAYER]).

This is a thin no_std newtype over u32 so keymap const data can build bitsets without a heap or an external bitset crate. Widening capacity later is a storage-type change (u64, u128, or multi-limb) behind the same API.

Implementations§

Source§

impl LayerBitset

Source

pub const BITS: usize = 32

Number of representable layer bits.

Source

pub const EMPTY: LayerBitset

Empty bitset (no layers selected).

Source

pub const ALL: LayerBitset

Bitset with every representable layer bit set.

Source

pub const fn from_bits(bits: u32) -> LayerBitset

Construct from raw bits (bit i = layer i).

Source

pub const fn bits(self) -> u32

Raw bit pattern.

Source

pub const fn contains(self, index: usize) -> bool

Returns true if bit index is set.

Source

pub const fn insert(self, index: usize) -> LayerBitset

Returns a copy with bit index set, if index is in range.

Source

pub const fn is_superset_of(self, other: LayerBitset) -> bool

Returns true if every bit set in other is also set in self.

Trait Implementations§

Source§

impl BitAnd for LayerBitset

Source§

type Output = LayerBitset

The resulting type after applying the & operator.
Source§

fn bitand(self, rhs: LayerBitset) -> <LayerBitset as BitAnd>::Output

Performs the & operation. Read more
Source§

impl BitOr for LayerBitset

Source§

type Output = LayerBitset

The resulting type after applying the | operator.
Source§

fn bitor(self, rhs: LayerBitset) -> <LayerBitset as BitOr>::Output

Performs the | operation. Read more
Source§

impl Clone for LayerBitset

Source§

fn clone(&self) -> LayerBitset

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for LayerBitset

Source§

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

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

impl Default for LayerBitset

Source§

fn default() -> LayerBitset

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for LayerBitset

Source§

fn deserialize<__D>( __deserializer: __D, ) -> Result<LayerBitset, <__D as Deserializer<'de>>::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl From<u32> for LayerBitset

Source§

fn from(bits: u32) -> LayerBitset

Converts to this type from the input type.
Source§

impl Not for LayerBitset

Source§

type Output = LayerBitset

The resulting type after applying the ! operator.
Source§

fn not(self) -> <LayerBitset as Not>::Output

Performs the unary ! operation. Read more
Source§

impl PartialEq for LayerBitset

Source§

fn eq(&self, other: &LayerBitset) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · 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 LayerBitset

Source§

impl Eq for LayerBitset

Source§

impl StructuralPartialEq for LayerBitset

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<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> 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> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,