Trait BitIter

Source
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§

Source

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);
Source

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);
Source

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);
Source

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);
Source

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);
Source

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.

Implementors§

Source§

impl<T: Binary> BitIter for T