pub trait BitIter: Binary {
// Provided methods
fn zeros(self) -> Zeros<Self> { ... }
fn ones(self) -> Ones<Self> { ... }
fn zero_indices(self) -> ZeroIndices<Self> { ... }
fn one_indices(self) -> OneIndices<Self> { ... }
fn bits(self) -> Bits<Self> { ... }
fn bits_rev(self) -> BitsRev<Self> { ... }
}Expand description
A trait for iterating a binary value’s bits.
Provided Methods§
Sourcefn zeros(self) -> Zeros<Self>
fn zeros(self) -> Zeros<Self>
Returns an iterator over the value’s zero-bits.
Contains values with one bit set to one, that being the zero-bit it’s representing.
§Examples
use bitit::BitIter;
let x: u8 = 0b10101100;
let mut iter = x.zeros();
assert_eq!(iter.next(), Some(0b00000001));
assert_eq!(iter.next(), Some(0b00000010));
assert_eq!(iter.next(), Some(0b00010000));
assert_eq!(iter.next(), Some(0b01000000));
assert_eq!(iter.next(), None);Sourcefn ones(self) -> Ones<Self>
fn ones(self) -> Ones<Self>
Returns an iterator over the value’s one-bits.
Contains values with one bit set to one, that being the one-bit it’s representing.
§Examples
use bitit::BitIter;
let x: u8 = 0b10101100;
let mut iter = x.ones();
assert_eq!(iter.next(), Some(0b00000100));
assert_eq!(iter.next(), Some(0b00001000));
assert_eq!(iter.next(), Some(0b00100000));
assert_eq!(iter.next(), Some(0b10000000));
assert_eq!(iter.next(), None);Sourcefn zero_indices(self) -> ZeroIndices<Self>
fn zero_indices(self) -> ZeroIndices<Self>
Returns an iterator over the indices of the value’s zero-bits.
Contains a u32 in range 0..N where N is the value’s size in bits.
The index 0 is the least significant bit, with N - 1 being the most significant.
§Examples
use bitit::BitIter;
let x: u8 = 0b10101100;
let mut iter = x.zero_indices();
assert_eq!(iter.next(), Some(0));
assert_eq!(iter.next(), Some(1));
assert_eq!(iter.next(), Some(4));
assert_eq!(iter.next(), Some(6));
assert_eq!(iter.next(), None);Sourcefn one_indices(self) -> OneIndices<Self>
fn one_indices(self) -> OneIndices<Self>
Returns an iterator over the indices of the value’s one-bits.
Contains a u32 in range 0..N where N is the value’s size in bits.
The index 0 is the least significant bit, with N - 1 being the most significant.
§Examples
use bitit::BitIter;
let x: u8 = 0b10101100;
let mut iter = x.one_indices();
assert_eq!(iter.next(), Some(2));
assert_eq!(iter.next(), Some(3));
assert_eq!(iter.next(), Some(5));
assert_eq!(iter.next(), Some(7));
assert_eq!(iter.next(), None);Sourcefn bits(self) -> Bits<Self>
fn bits(self) -> Bits<Self>
Returns an iterator over the value’s bits.
Contains a bool, with true meaning the bit is one and false meaning it is zero.
§Examples
use bitit::BitIter;
let x: u8 = 0b10101100;
let mut iter = x.bits();
assert_eq!(iter.next(), Some(false));
assert_eq!(iter.next(), Some(false));
assert_eq!(iter.next(), Some(true));
assert_eq!(iter.next(), Some(true));
assert_eq!(iter.next(), Some(false));
assert_eq!(iter.next(), Some(true));
assert_eq!(iter.next(), Some(false));
assert_eq!(iter.next(), Some(true));
assert_eq!(iter.next(), None);Sourcefn bits_rev(self) -> BitsRev<Self>
fn bits_rev(self) -> BitsRev<Self>
Returns an iterator over the value’s bits reversed.
Contains a bool, with true meaning the bit is one and false meaning it is zero.
§Examples
use bitit::BitIter;
let x: u8 = 0b10101100;
let mut iter = x.bits_rev();
assert_eq!(iter.next(), Some(true));
assert_eq!(iter.next(), Some(false));
assert_eq!(iter.next(), Some(true));
assert_eq!(iter.next(), Some(false));
assert_eq!(iter.next(), Some(true));
assert_eq!(iter.next(), Some(true));
assert_eq!(iter.next(), Some(false));
assert_eq!(iter.next(), Some(false));
assert_eq!(iter.next(), None);Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.