#bitset #container #memory-layout

uniset

支持就地原子操作的分层、可增长位集合

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 2020年2月18日

#7 in #位集合

Download history 675/week @ 2024-04-22 239/week @ 2024-04-29 429/week @ 2024-05-06 231/week @ 2024-05-13 318/week @ 2024-05-20 420/week @ 2024-05-27 358/week @ 2024-06-03 341/week @ 2024-06-10 588/week @ 2024-06-17 417/week @ 2024-06-24 215/week @ 2024-07-01 579/week @ 2024-07-08 408/week @ 2024-07-15 318/week @ 2024-07-22 360/week @ 2024-07-29 245/week @ 2024-08-05

1,341 每月下载量
4 个包中使用 (通过 unicycle)

MIT/Apache

54KB
883

uniset

github crates.io docs.rs build status

支持就地原子操作的分层、可增长位集合。

该想法基于 hibitset,但采用动态增长而不是固定容量。通过仔细管理数据布局,我们还可以在局部和原子位集合变体之间支持结构共享。


功能

  • vec-safety - 避免依赖于假设 &mut Vec<T> 可以安全地强制转换为 &mut Vec<U> 如果 TU 具有相同的内存布局(默认启用,问题 #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());

无运行时依赖