#integer #integer-compression #compression #bit-level #array #range #growable

打包整数

在范围 u1u31 之间的整数类型的可增长数组

3个不稳定版本

0.2.0 2023年9月4日
0.1.2 2020年11月5日
0.1.1 2020年11月5日
0.1.0 2020年11月5日

#2266数据结构

每月 38次下载

MIT 许可证

27KB
547

打包整数

packed_integers 为范围 u1u31 之间的整数类型提供了一个可增长数组。

用例

假设你有一系列范围在 [0, 100000] 的无符号整数,你希望将它们存储在内存中。这个范围内的值可以使用每个整数 17 位来表示,因为 217 - 1 = 131071。由于Rust没有 u17 类型,你通常会使用 u32 数组来存储这些值,每个整数浪费了 15 位。

packed-integers 通过在位级别打包这些整数来帮助解决这个问题,本质上是以空间换取时间。

API

尽可能模仿Rust的 Vec API,以便提供你可能已经熟悉的集合方法。

灵感/资源


lib.rs:

packed_integers 为范围 u1u31 之间的整数类型提供了一个可增长数组。

用例

假设你有一系列范围在 [0, 100000] 的无符号整数,你希望将它们存储在内存中。这个范围内的值可以使用每个整数 17 位来表示,因为 217 - 1 = 131071。由于Rust没有 u17 类型,你通常会使用 u32 数组来存储这些值,每个整数浪费了 15 位。

packed_integers 通过在位级别打包这些整数来帮助解决这个问题,本质上是以空间换取时间。

API

尽可能模仿Rust的 Vec API,以便提供你可能已经熟悉的集合方法。

无运行时依赖