[−][src]Struct bitvec::index::BitSel
A one-hot selection mask, to be applied to a memory element M
.
This type selects exactly one bit, and is produced by the conversion of a
semantic BitIdx
to a BitPos
through a BitOrder
implementation, and
then applying 1 << pos
. Values of this type are used to select only the bit
specified by a BitIdx
when performing memory operations.
Type Parameters
M
: The register type that values of this type govern.
Validity
Values of this type are required to have exactly one bit set to 1
and all
other bits set to 0
.
Construction
This type is only constructed from BitPos
values, which are themselves only
constructed by a chain of known-good BitIdx
values passed into known-correct
BitOrder
implementations. As such, bitvec
can use BitSel
values with full
confidence that they are correct in the surrounding context.
Implementations
impl<M> BitSel<M> where
M: BitMemory,
[src]
M: BitMemory,
pub unsafe fn new(sel: M) -> Option<Self>
[src]
Wraps a selector value as a known-good selection of an M
element.
Parameters
sel
: A one-hot selection mask of a bit in anM
element.
Returns
If sel
does not have exactly one bit set, this returns None
;
otherwise, it returns a BitSel
wrapping the sel
value.
Safety
This function must only be called within a BitOrder::select
implementation that is verified to be correct.
pub unsafe fn new_unchecked(sel: M) -> Self
[src]
Wraps a selector value as an assumed-good selection of an M
element.
Parameters
sel
: A one-hot selection mask of a bit in anM
element.
Returns
sel
wrapped in a BitSel
.
Safety
sel
must have exactly one bit set high and all others low. In
debug builds, invalid sel
values cause a panic; release builds do not
check the input.
This function must only be called in a correct BitOrder::select
implementation.
pub fn mask(self) -> BitMask<M> where
M: BitMemory,
[src]
M: BitMemory,
Converts the selector into a bit mask.
This is a type-cast.
pub fn value(self) -> M
[src]
Views the internal selector value.
pub fn range_all(
) -> impl Iterator<Item = Self> + DoubleEndedIterator + ExactSizeIterator + FusedIterator
[src]
) -> impl Iterator<Item = Self> + DoubleEndedIterator + ExactSizeIterator + FusedIterator
Ranges over all possible selector values.
Trait Implementations
impl<M: Clone> Clone for BitSel<M> where
M: BitMemory,
[src]
M: BitMemory,
impl<M: Copy> Copy for BitSel<M> where
M: BitMemory,
[src]
M: BitMemory,
impl<M> Debug for BitSel<M> where
M: BitMemory,
[src]
M: BitMemory,
impl<M: Default> Default for BitSel<M> where
M: BitMemory,
[src]
M: BitMemory,
impl<M> Display for BitSel<M> where
M: BitMemory,
[src]
M: BitMemory,
impl<M: Eq> Eq for BitSel<M> where
M: BitMemory,
[src]
M: BitMemory,
impl<M: Hash> Hash for BitSel<M> where
M: BitMemory,
[src]
M: BitMemory,
fn hash<__H: Hasher>(&self, state: &mut __H)
[src]
fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,
1.3.0[src]
H: Hasher,
impl<M: Ord> Ord for BitSel<M> where
M: BitMemory,
[src]
M: BitMemory,
fn cmp(&self, other: &BitSel<M>) -> Ordering
[src]
#[must_use]fn max(self, other: Self) -> Self
1.21.0[src]
#[must_use]fn min(self, other: Self) -> Self
1.21.0[src]
#[must_use]fn clamp(self, min: Self, max: Self) -> Self
[src]
impl<M: PartialEq> PartialEq<BitSel<M>> for BitSel<M> where
M: BitMemory,
[src]
M: BitMemory,
impl<M: PartialOrd> PartialOrd<BitSel<M>> for BitSel<M> where
M: BitMemory,
[src]
M: BitMemory,
fn partial_cmp(&self, other: &BitSel<M>) -> Option<Ordering>
[src]
fn lt(&self, other: &BitSel<M>) -> bool
[src]
fn le(&self, other: &BitSel<M>) -> bool
[src]
fn gt(&self, other: &BitSel<M>) -> bool
[src]
fn ge(&self, other: &BitSel<M>) -> bool
[src]
impl<M> StructuralEq for BitSel<M> where
M: BitMemory,
[src]
M: BitMemory,
impl<M> StructuralPartialEq for BitSel<M> where
M: BitMemory,
[src]
M: BitMemory,
impl<M> Sum<BitSel<M>> for BitMask<M> where
M: BitMemory,
[src]
M: BitMemory,
Auto Trait Implementations
impl<M> RefUnwindSafe for BitSel<M> where
M: RefUnwindSafe,
M: RefUnwindSafe,
impl<M> Send for BitSel<M>
impl<M> Sync for BitSel<M>
impl<M> Unpin for BitSel<M>
impl<M> UnwindSafe for BitSel<M> where
M: UnwindSafe,
M: UnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Conv for T
[src]
impl<T> FmtForward for T
[src]
fn fmt_binary(self) -> FmtBinary<Self> where
Self: Binary,
[src]
Self: Binary,
fn fmt_display(self) -> FmtDisplay<Self> where
Self: Display,
[src]
Self: Display,
fn fmt_lower_exp(self) -> FmtLowerExp<Self> where
Self: LowerExp,
[src]
Self: LowerExp,
fn fmt_lower_hex(self) -> FmtLowerHex<Self> where
Self: LowerHex,
[src]
Self: LowerHex,
fn fmt_octal(self) -> FmtOctal<Self> where
Self: Octal,
[src]
Self: Octal,
fn fmt_pointer(self) -> FmtPointer<Self> where
Self: Pointer,
[src]
Self: Pointer,
fn fmt_upper_exp(self) -> FmtUpperExp<Self> where
Self: UpperExp,
[src]
Self: UpperExp,
fn fmt_upper_hex(self) -> FmtUpperHex<Self> where
Self: UpperHex,
[src]
Self: UpperHex,
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> Pipe for T
[src]
impl<T> PipeAsRef for T
[src]
fn pipe_as_ref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R where
R: 'a,
Self: AsRef<T>,
T: 'a,
[src]
R: 'a,
Self: AsRef<T>,
T: 'a,
fn pipe_as_mut<'a, T, R>(&'a mut self, func: impl FnOnce(&'a mut T) -> R) -> R where
R: 'a,
Self: AsMut<T>,
T: 'a,
[src]
R: 'a,
Self: AsMut<T>,
T: 'a,
impl<T> PipeBorrow for T
[src]
fn pipe_borrow<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R where
R: 'a,
Self: Borrow<T>,
T: 'a,
[src]
R: 'a,
Self: Borrow<T>,
T: 'a,
fn pipe_borrow_mut<'a, T, R>(
&'a mut self,
func: impl FnOnce(&'a mut T) -> R
) -> R where
R: 'a,
Self: BorrowMut<T>,
T: 'a,
[src]
&'a mut self,
func: impl FnOnce(&'a mut T) -> R
) -> R where
R: 'a,
Self: BorrowMut<T>,
T: 'a,
impl<T> PipeDeref for T
[src]
fn pipe_deref<'a, R>(&'a self, func: impl FnOnce(&'a Self::Target) -> R) -> R where
R: 'a,
Self: Deref,
[src]
R: 'a,
Self: Deref,
fn pipe_deref_mut<'a, R>(
&'a mut self,
func: impl FnOnce(&'a mut Self::Target) -> R
) -> R where
R: 'a,
Self: DerefMut,
[src]
&'a mut self,
func: impl FnOnce(&'a mut Self::Target) -> R
) -> R where
R: 'a,
Self: DerefMut,
impl<T> PipeRef for T
[src]
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R where
R: 'a,
[src]
R: 'a,
fn pipe_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R where
R: 'a,
[src]
R: 'a,
impl<T> Tap for T
[src]
fn tap<F, R>(self, func: F) -> Self where
F: FnOnce(&Self) -> R,
[src]
F: FnOnce(&Self) -> R,
fn tap_dbg<F, R>(self, func: F) -> Self where
F: FnOnce(&Self) -> R,
[src]
F: FnOnce(&Self) -> R,
fn tap_mut<F, R>(self, func: F) -> Self where
F: FnOnce(&mut Self) -> R,
[src]
F: FnOnce(&mut Self) -> R,
fn tap_mut_dbg<F, R>(self, func: F) -> Self where
F: FnOnce(&mut Self) -> R,
[src]
F: FnOnce(&mut Self) -> R,
impl<T, U> TapAsRef<U> for T where
U: ?Sized,
[src]
U: ?Sized,
fn tap_ref<F, R>(self, func: F) -> Self where
F: FnOnce(&T) -> R,
Self: AsRef<T>,
[src]
F: FnOnce(&T) -> R,
Self: AsRef<T>,
fn tap_ref_dbg<F, R>(self, func: F) -> Self where
F: FnOnce(&T) -> R,
Self: AsRef<T>,
[src]
F: FnOnce(&T) -> R,
Self: AsRef<T>,
fn tap_ref_mut<F, R>(self, func: F) -> Self where
F: FnOnce(&mut T) -> R,
Self: AsMut<T>,
[src]
F: FnOnce(&mut T) -> R,
Self: AsMut<T>,
fn tap_ref_mut_dbg<F, R>(self, func: F) -> Self where
F: FnOnce(&mut T) -> R,
Self: AsMut<T>,
[src]
F: FnOnce(&mut T) -> R,
Self: AsMut<T>,
impl<T, U> TapBorrow<U> for T where
U: ?Sized,
[src]
U: ?Sized,
fn tap_borrow<F, R>(self, func: F) -> Self where
F: FnOnce(&T) -> R,
Self: Borrow<T>,
[src]
F: FnOnce(&T) -> R,
Self: Borrow<T>,
fn tap_borrow_dbg<F, R>(self, func: F) -> Self where
F: FnOnce(&T) -> R,
Self: Borrow<T>,
[src]
F: FnOnce(&T) -> R,
Self: Borrow<T>,
fn tap_borrow_mut<F, R>(self, func: F) -> Self where
F: FnOnce(&mut T) -> R,
Self: BorrowMut<T>,
[src]
F: FnOnce(&mut T) -> R,
Self: BorrowMut<T>,
fn tap_borrow_mut_dbg<F, R>(self, func: F) -> Self where
F: FnOnce(&mut T) -> R,
Self: BorrowMut<T>,
[src]
F: FnOnce(&mut T) -> R,
Self: BorrowMut<T>,
impl<T> TapDeref for T
[src]
fn tap_deref<F, R>(self, func: F) -> Self where
F: FnOnce(&Self::Target) -> R,
Self: Deref,
[src]
F: FnOnce(&Self::Target) -> R,
Self: Deref,
fn tap_deref_dbg<F, R>(self, func: F) -> Self where
F: FnOnce(&Self::Target) -> R,
Self: Deref,
[src]
F: FnOnce(&Self::Target) -> R,
Self: Deref,
fn tap_deref_mut<F, R>(self, func: F) -> Self where
F: FnOnce(&mut Self::Target) -> R,
Self: DerefMut,
[src]
F: FnOnce(&mut Self::Target) -> R,
Self: DerefMut,
fn tap_deref_mut_dbg<F, R>(self, func: F) -> Self where
F: FnOnce(&mut Self::Target) -> R,
Self: DerefMut,
[src]
F: FnOnce(&mut Self::Target) -> R,
Self: DerefMut,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T> ToString for T where
T: Display + ?Sized,
[src]
T: Display + ?Sized,
impl<T> TryConv for T
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,