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 数据结构

Download history 1160/week @ 2024-03-16 882/week @ 2024-03-23 1076/week @ 2024-03-30 2047/week @ 2024-04-06 2760/week @ 2024-04-13 3246/week @ 2024-04-20 2757/week @ 2024-04-27 2814/week @ 2024-05-04 3587/week @ 2024-05-11 3330/week @ 2024-05-18 3458/week @ 2024-05-25 3859/week @ 2024-06-01 3352/week @ 2024-06-08 2994/week @ 2024-06-15 4456/week @ 2024-06-22 2683/week @ 2024-06-29

14,028 每月下载次数
用于 10 个crate(2个直接使用)

Apache-2.0/MIT

28KB
506

Build Status Latest version Documentation

PackedVec

PackedVec以高效的方式存储整数向量,同时提供与Vec类似的API。基本思想是使用所需的最小位数来存储每个元素。例如,如果我们有一个包含元素[20, 30, 140]的Vec<u64>,每个元素浪费了大部分的64位:7位足以表示向量中元素的范围。对于经常包含小范围数字且很少创建但频繁读取的向量,这可以显著节省内存和性能。

示例

PackedVecVec有两个主要的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