#boolean #bool #vec

boolvec

在内存中连续存储布尔值的向量

4个版本

0.2.6 2020年6月28日
0.2.5 2020年6月27日
0.1.0 2020年6月24日

数据结构中排名874

Download history · Rust 包仓库 103/week @ 2024-03-25 · Rust 包仓库 76/week @ 2024-04-01 · Rust 包仓库 58/week @ 2024-04-08 · Rust 包仓库 50/week @ 2024-04-15 · Rust 包仓库 55/week @ 2024-04-22 · Rust 包仓库 57/week @ 2024-04-29 · Rust 包仓库 64/week @ 2024-05-06 · Rust 包仓库 62/week @ 2024-05-13 · Rust 包仓库 31/week @ 2024-05-20 · Rust 包仓库 105/week @ 2024-05-27 · Rust 包仓库 81/week @ 2024-06-03 · Rust 包仓库 160/week @ 2024-06-10 · Rust 包仓库 116/week @ 2024-06-17 · Rust 包仓库 61/week @ 2024-06-24 · Rust 包仓库 63/week @ 2024-07-01 · Rust 包仓库 118/week @ 2024-07-08 · Rust 包仓库

每月下载量366
3个crate中使用了(通过annonars

MIT许可协议

54KB
1.5K SLoC

此crate提供了BoolVec结构。这基本上是一个围绕Vec<u8>的包装,其中每个字节都被解释为8个bool

快速提示:对这段代码做你想做的,我实际上并不在乎 :)

示例

// Create a new `BoolVec`
use boolvec::BoolVec;

let mut vec = BoolVec::new();

// You can push data onto it
vec.push(true);
vec.push(false);

// ... retreve it
assert_eq!(vec.get(0), Some(true));
assert_eq!(vec.get(3), None);

// ... update it
vec.set(0, false);
assert_eq!(vec.get(0), Some(false));

// You can get a reference to an unaligned boolean.
let mut boolean = vec.get_mut(1).unwrap();
assert_eq!(boolean.get(), false);

boolean.set(true);
assert_eq!(vec.get(1), Some(true));

// You can also iterate over this data (mutably or not).
let mut iter = vec.iter_mut();

iter.next().unwrap().set(true);
iter.next().unwrap().set(false);

let mut iter = vec.iter();

assert_eq!(iter.next(), Some(true));
assert_eq!(iter.next(), Some(false));
assert_eq!(iter.next(), None);

无运行时依赖