bitcombiiter

crates.io CI

bitcombiiter is a small dependency-free crate to enumerate all bit combinations less than given unsigned integer value keeping the number of bits.

```rust use bitcombiiter::BitCombinations;

fn main() { let u = 0b00010100u8;

let mut c = BitCombinations::new(u);

println!("{:#b}", c.next().unwrap()); // => 0b00010010
println!("{:#b}", c.next().unwrap()); // => 0b00010001
println!("{:#b}", c.next().unwrap()); // => 0b00001100
println!("{:#b}", c.next().unwrap()); // => 0b00001010
println!("{:#b}", c.next().unwrap()); // => 0b00001001
println!("{:#b}", c.next().unwrap()); // => 0b00000110
println!("{:#b}", c.next().unwrap()); // => 0b00000101
println!("{:#b}", c.next().unwrap()); // => 0b00000011
println!("{}", c.next().is_none()); // => true

} ```

This crate is useful when you want to enumerate all n bit integers including k ones.

rust // Enumerate all 5 bit integers including 3 ones (as u8) BitCombinations::new(0b11100u8) // 11100 // 11010 // 11001 // 10110 // 10101 // ...

Install

Add this crate to dependencies in your Cargo.toml.

toml [dependencies] bit_combi_iter = "1"

Document

See the API document.

Special Thanks

The algorithm was borrowed from the blog post by @herumi.

License

Distributed under the MIT License.