#vecset #arrayset #linearmap #arraymap #vecmap

linear_collections

基于线性数据结构的 Map 和 Set 类型

5 个不稳定版本

0.3.0 2024年5月21日
0.2.2 2024年5月2日
0.2.1 2024年5月2日
0.2.0 2024年5月2日
0.1.0 2024年5月2日

#281#data-structures

Download history 305/week @ 2024-04-29 166/week @ 2024-05-20 1/week @ 2024-06-10

每月 243 次下载

MIT 许可证

40KB
727

线性集合

基于线性数据结构的 Map 和 Set 类型。

Map 的许多用途是针对小集合,其中 std 中比较数据结构的惩罚(内存开销、哈希吞吐量、非线性数据结构的间接和潜在的缓存不局部性)大于它们相对降低的算法复杂度。

这种惩罚通常不大,然而,如果在一个紧密循环中分配这样的小结构(比如,从 Json Web Token 反序列化声明)可能会获得一点性能提升。

动机

存在另一个实现线性集合类型(linear_map)的包,但它只支持由向量支持的集合:我还需要数组类型。

特性标志

  • "macros": 编译类型字面量的类型检查。
  • "serde": 使用 serde 进行序列化和反序列化。

0.3.0 版本的更改

  • 修复 merge_from_iter
  • 添加宏
  • 添加了许多特质推导
  • 为 VecSet 添加了 serde 支持
  • ArrayMap::new_unchecked 重命名为 ArrayMap::from_array_unchecked
  • 添加 VecSet::from_map_unchecked

待办事项

  • 可失败分配 API
  • VecDeque 支持的类型(如果你需要从 into_inner() 返回 vecdeque 会很棒)
  • 通过 serde-big-array 为数组类型添加 serde 支持
  • 迭代器支持
  • 更多的测试

稳定性策略(pre - 1.0)

  • 1.0 将不会实现,直到此包依赖的所有不稳定特性要么得到稳定化,要么被移除。
  • 所有更改,包括带有 "nightly" 前缀的特性的移除,只要它们是为了符合底层不稳定 API 或未指定为非破坏性的,都不被视为破坏性的。请勿在公共库中使用它们。

依赖

~195KB