5 个版本
0.2.4 | 2024年3月13日 |
---|---|
0.2.3 | 2023年3月22日 |
0.2.1 | 2023年1月2日 |
0.2.0 | 2020年6月4日 |
0.1.1 |
|
#7 in #位集合
1,341 每月下载量
在 4 个包中使用 (通过 unicycle)
54KB
883 行
uniset
支持就地原子操作的分层、可增长位集合。
该想法基于 hibitset,但采用动态增长而不是固定容量。通过仔细管理数据布局,我们还可以在局部和原子位集合变体之间支持结构共享。
功能
vec-safety
- 避免依赖于假设&mut Vec<T>
可以安全地强制转换为&mut Vec<U>
如果T
和U
具有相同的内存布局(默认启用,问题 #1)。
示例
use uniset::BitSet;
let mut set = BitSet::new();
assert!(set.is_empty());
assert_eq!(0, set.capacity());
set.set(127);
set.set(128);
assert!(!set.is_empty());
assert!(set.test(128));
assert_eq!(vec![127, 128], set.iter().collect::<Vec<_>>());
assert!(!set.is_empty());
assert_eq!(vec![127, 128], set.drain().collect::<Vec<_>>());
assert!(set.is_empty());