1 个不稳定版本
0.2.0 | 2021年6月17日 |
---|---|
0.1.0 |
|
#1295 在 数据结构
在 2 个包中使用
16KB
330 行
BitIndex
小端序零索引位字符串表示。
内部由原始无符号整数类型表示。根据需要跟踪的索引数量,使用适当的 BitIndex
。
u8
->BitIndex8
u16
->BitIndex16
u32
->BitIndex32
u64
->BitIndex64
u128
->BitIndex128
使用方法
使用所需的索引初始化 BitIndex
。可以展开 BitIndex
以返回内部表示的副本。
let bi_res = BitIndex8::new(5) // -> Ok(BitIndex8)
let bi = bi_res.unwrap() // -> BitIndex8
assert_eq!(0b11111, bi.unwrap());
可以直接设置和清除位。 BitIndex
是零索引。
let mut bi = BitIndex8::new(5).unwrap() // -> BitIndex8
bi.unset(0);
assert_eq!(0b11110, bi.unwrap());
bi.set(0);
assert_eq!(0b11111, bi.unwrap());
可以查询最小和最大可用索引。
let mut bi = BitIndex8::new(5).unwrap() // -> BitIndex8
assert_eq!(Some(4), bi.largest());
bi.unset(4);
bi.unset(3);
assert_eq!(Some(2), bi.largest());
bi.clear();
assert_eq!(None, bi.largest());
bi.restore();
assert_eq!(Some(4), bi.largest());
assert_eq!(Some(0), bi.smallest());
bi.unset(1);
bi.unset(2);
assert_eq!(Some(2), bi.smallest());
bi.clear();
assert_eq!(None, bi.smallest());
bi.restore();
assert_eq!(Some(0), bi.smallest());
弹出最小/最大索引返回值,并清除它
let mut bi = BitIndex8::new(5).unwrap() // -> BitIndex8
assert_eq!(Some(4), bi.pop_largest());
assert_eq!(Some(3), bi.largest());
assert_eq!(Some(3), bi.pop_largest());
assert_eq!(Some(2), bi.pop_largest());
assert_eq!(Some(1), bi.pop_largest());
assert_eq!(Some(0), bi.pop_largest());
assert_eq!(None, bi.pop_largest());
bi.restore();
assert_eq!(Some(0), bi.pop_smallest());
assert_eq!(Some(1), bi.smallest());