pub trait BitSliceIndex<'a, T, O> where
    T: BitStore,
    O: BitOrder
{ type Immut; type Mut; fn get(self, bits: &'a BitSlice<T, O>) -> Option<Self::Immut>; fn get_mut(self, bits: &'a mut BitSlice<T, O>) -> Option<Self::Mut>; unsafe fn get_unchecked(self, bits: &'a BitSlice<T, O>) -> Self::Immut; unsafe fn get_unchecked_mut(self, bits: &'a mut BitSlice<T, O>) -> Self::Mut; fn index(self, bits: &'a BitSlice<T, O>) -> Self::Immut; fn index_mut(self, bits: &'a mut BitSlice<T, O>) -> Self::Mut; }
Expand description

Bit-Slice Indexing

This trait, like its mirror in core, unifies various types that can be used to index within a bit-slice. Individual usize indices can refer to exactly one bit within a bit-slice, and R: RangeBounds<usize> ranges can refer to subslices of any length within a bit-slice.

The three operations (get, get unchecked, and index) reflect the three theories of lookup within a collection: fallible, pre-checked, and crashing on failure.

You will likely not use this trait directly; its methods all have corresponding methods on BitSlice that delegate to particular implementations of it.

Original

slice::SliceIndex

API Differences

The SliceIndex::Output type is not usable here, because bitvec cannot manifest a &mut bool reference. Work to unify referential values in the trait system is ongoing, and in the future this functionality may be approximated.

Instead, this uses two output types, Immut and Mut, that are the referential structures produced by indexing immutably or mutably, respectively. This allows the range implementations to produce &/mut BitSlice as expected, while usize produces the proxy structure.

Required Associated Types

The output type of immutable access.

The output type of mutable access.

Required Methods

Immutably indexes into a bit-slice, returning None if self is out of bounds.

Original

SliceIndex::get

Mutably indexes into a bit-slice, returning None if self is out of bounds.

Original

SliceIndex::get_mut

Immutably indexes into a bit-slice without doing any bounds checking.

Original

SliceIndex::get_unchecked

Safety

If self is not in bounds, then memory accesses through it are illegal and the program becomes undefined. You must ensure that self is appropriately within 0 .. bits.len() at the call site.

Mutably indexes into a bit-slice without doing any bounds checking.

Original

SliceIndex::get_unchecked_mut

Safety

If self is not in bounds, then memory accesses through it bare illegal and the program becomes undefined. You must ensure that self is appropriately within 0 .. bits.len() at the call site.

Immutably indexes into a bit-slice, panicking if self is out of bounds.

Original

SliceIndex::index

Panics

Implementations are required to panic if self exceeds bits.len() in any way.

Mutably indexes into a bit-slice, panicking if self is out of bounds.

Original

SliceIndex::index_mut

Panics

Implementations are required to panic if self exceeds bits.len() in any way.

Implementations on Foreign Types

Implementors