A no-std, no-alloc trait for querying and manipulating bits in a
[[usize]
] and iterating their run lengths.
```rust use rle_bitset::*;
fn onetwo() { let mut x: [usize; 4] = [0, 0, 0, 0]; let over = WORDWIDTH * 4; x.setbit(WORDWIDTH, true).unwrap(); asserteq!(x.getbit(WORDWIDTH).unwrap(), true); { let mut iter = x.runlengths(..).unwrap(); asserteq!(Some(RL::new(false, 0, WORDWIDTH)), iter.next()); asserteq!(Some(RL::new(true, WORDWIDTH, WORDWIDTH + 1)), iter.next()); asserteq!(Some(RL::new(false, WORDWIDTH + 1, over)), iter.next()); asserteq!(None, iter.next()); } x.setbit(WORDWIDTH - 1, true).unwrap(); asserteq!(x.getbit(WORDWIDTH - 1).unwrap(), true); { let mut iter = x.runlengths(..).unwrap(); asserteq!(Some(RL::new(false, 0, WORDWIDTH - 1)), iter.next()); asserteq!(Some(RL::new(true, WORDWIDTH -1, WORDWIDTH + 1)), iter.next()); asserteq!(Some(RL::new(false, WORDWIDTH + 1, over)), iter.next()); asserteq!(None, iter.next()); } } ```
Copyright (c) 2020 James Laver, rle-bitset contributors
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.