pub trait BitSliceIndex<'a, T, O>{
type Immut;
type Mut;
// Required methods
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
§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§
Required Methods§
Sourcefn get(self, bits: &'a BitSlice<T, O>) -> Option<Self::Immut>
fn get(self, bits: &'a BitSlice<T, O>) -> Option<Self::Immut>
Immutably indexes into a bit-slice, returning None if self is out of
bounds.
§Original
Sourcefn get_mut(self, bits: &'a mut BitSlice<T, O>) -> Option<Self::Mut>
fn get_mut(self, bits: &'a mut BitSlice<T, O>) -> Option<Self::Mut>
Mutably indexes into a bit-slice, returning None if self is out of
bounds.
§Original
Sourceunsafe fn get_unchecked(self, bits: &'a BitSlice<T, O>) -> Self::Immut
unsafe fn get_unchecked(self, bits: &'a BitSlice<T, O>) -> Self::Immut
Sourceunsafe fn get_unchecked_mut(self, bits: &'a mut BitSlice<T, O>) -> Self::Mut
unsafe fn get_unchecked_mut(self, bits: &'a mut BitSlice<T, O>) -> Self::Mut
Implementations on Foreign Types§
Source§impl<'a, T, O> BitSliceIndex<'a, T, O> for usize
impl<'a, T, O> BitSliceIndex<'a, T, O> for usize
type Immut = BitRef<'a, Const, T, O>
type Mut = BitRef<'a, Mut, T, O>
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
Source§impl<'a, T, O> BitSliceIndex<'a, T, O> for Range<usize>
impl<'a, T, O> BitSliceIndex<'a, T, O> for Range<usize>
type Immut = &'a BitSlice<T, O>
type Mut = &'a mut BitSlice<T, O>
fn get(self, bits: Self::Immut) -> Option<Self::Immut>
fn get_mut(self, bits: Self::Mut) -> Option<Self::Mut>
unsafe fn get_unchecked(self, bits: Self::Immut) -> Self::Immut
unsafe fn get_unchecked_mut(self, bits: Self::Mut) -> Self::Mut
fn index(self, bits: Self::Immut) -> Self::Immut
fn index_mut(self, bits: Self::Mut) -> Self::Mut
Source§impl<'a, T, O> BitSliceIndex<'a, T, O> for RangeFrom<usize>
impl<'a, T, O> BitSliceIndex<'a, T, O> for RangeFrom<usize>
type Immut = &'a BitSlice<T, O>
type Mut = &'a mut BitSlice<T, O>
fn get(self, bits: Self::Immut) -> Option<Self::Immut>
fn get_mut(self, bits: Self::Mut) -> Option<Self::Mut>
unsafe fn get_unchecked(self, bits: Self::Immut) -> Self::Immut
unsafe fn get_unchecked_mut(self, bits: Self::Mut) -> Self::Mut
fn index(self, bits: Self::Immut) -> Self::Immut
fn index_mut(self, bits: Self::Mut) -> Self::Mut
Source§impl<'a, T, O> BitSliceIndex<'a, T, O> for RangeFull
Available on non-tarpaulin_include only.
impl<'a, T, O> BitSliceIndex<'a, T, O> for RangeFull
tarpaulin_include only.