Crates.io | rle-bitset |
lib.rs | rle-bitset |
version | 0.1.0 |
source | src |
created_at | 2020-08-15 06:08:42.400204 |
updated_at | 2020-08-15 06:08:42.400204 |
description | A no-std, no-alloc trait for querying and manipulating bits in a `[usize]` and iterating their run lengths. |
homepage | https://github.com/irrustible/rle-bitset |
repository | https://github.com/irrustible/rle-bitset |
max_upload_size | |
id | 276902 |
size | 26,580 |
A no-std, no-alloc trait for querying and manipulating bits in a
[[usize]
] and iterating their run lengths.
use rle_bitset::*;
#[test]
fn one_two() {
let mut x: [usize; 4] = [0, 0, 0, 0];
let over = WORD_WIDTH * 4;
x.set_bit(WORD_WIDTH, true).unwrap();
assert_eq!(x.get_bit(WORD_WIDTH).unwrap(), true);
{
let mut iter = x.run_lengths(..).unwrap();
assert_eq!(Some(RL::new(false, 0, WORD_WIDTH)), iter.next());
assert_eq!(Some(RL::new(true, WORD_WIDTH, WORD_WIDTH + 1)), iter.next());
assert_eq!(Some(RL::new(false, WORD_WIDTH + 1, over)), iter.next());
assert_eq!(None, iter.next());
}
x.set_bit(WORD_WIDTH - 1, true).unwrap();
assert_eq!(x.get_bit(WORD_WIDTH - 1).unwrap(), true);
{
let mut iter = x.run_lengths(..).unwrap();
assert_eq!(Some(RL::new(false, 0, WORD_WIDTH - 1)), iter.next());
assert_eq!(Some(RL::new(true, WORD_WIDTH -1, WORD_WIDTH + 1)), iter.next());
assert_eq!(Some(RL::new(false, WORD_WIDTH + 1, over)), iter.next());
assert_eq!(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/.