# Bitit
A library for bitwise iteration over Rust integers.
Provides simple and efficient iterators for integer types.
# Examples
```rust
fn main() {
use bitit::BitIter;
let x: u8 = 0b10101100;
// Get ones as singular bits:
for b in x.ones() {
print!("{b} ");
}
println!();
// Or zeros:
for b in x.zeros() {
print!("{b} ");
}
println!();
// Or as indices:
for i in x.one_indices() {
print!("{i} ");
}
println!();
// Or see them all as bools:
for b in x.bits_rev() {
// Using `bits_rev` so the bits are printed in the same order as defined.
print!("{}", b as u8);
}
println!();
}
```
Output:
```text
4 8 32 128
1 2 16 64
2 3 5 7
10101100
```
# Features
Bitit provides the following iterators with the `BitIter` trait:
- Iterating ones from least to most significant with `BitIter::ones`
- Iterating zeros from least to most significant with `BitIter::zeros`
- Iterating the bitwise indices of all ones with `BitIter::one_indices`
- Iterating the bitwise indices of all zeros with `BitIter::zero_indices`
- Iterating all bits as booleans from least to most significant with `BitIter::bits`
- Iterating all bits as booleans from most to least significant with `BitIter::bits_rev`
- The ability to reverse all iterators (except `BitIter::bits` which has `BitIter::bits_rev`) with `Iterator::rev`
The `BitIter` trait is implemented for all signed and unsigned primitive integers `i8`, `u8`, `i16`, etc. as well as `usize` and `isize`.