7个稳定版本
使用旧Rust 2015
1.2.4 | 2021年8月4日 |
---|---|
1.2.3 | 2021年3月15日 |
1.2.2 | 2019年11月21日 |
1.2.1 | 2019年7月31日 |
1.1.0 | 2018年10月17日 |
1546 in 数据结构
14,028 每月下载次数
用于 10 个crate(2个直接使用)
28KB
506 行
PackedVec
PackedVec以高效的方式存储整数向量,同时提供与Vec
类似的API。基本思想是使用所需的最小位数来存储每个元素。例如,如果我们有一个包含元素[20, 30, 140]的Vec<u64>
,每个元素浪费了大部分的64位:7位足以表示向量中元素的范围。对于经常包含小范围数字且很少创建但频繁读取的向量,这可以显著节省内存和性能。
示例
PackedVec
与Vec
有两个主要的API差异:从Vec
创建PackedVec
;以及PackedVec
返回值而不是引用。这两点可以从下面的示例中看出
use packedvec::PackedVec;
let v = vec![-1, 30, 120];
let pv = PackedVec::new(v.clone());
assert_eq!(pv.get(0), Some(-1));
assert_eq!(pv.get(2), Some(120));
assert_eq!(pv.get(3), None);
assert_eq!(v.iter().cloned().collect::<Vec<_>>(), pv.iter().collect::<Vec<_>>());
依赖项
~94–330KB