#集合 #映射 #元素 #数字 #固定 #有序 #容量

无std petitset

一个有序集合数据结构,针对固定容量下少量元素栈分配存储进行了优化

5 个版本

0.2.1 2022年2月8日
0.2.0 2022年2月1日
0.1.2 2022年1月26日
0.1.1 2022年1月21日
0.1.0 2022年1月21日

#1427数据结构

Download history 468/week @ 2024-04-03 390/week @ 2024-04-10 491/week @ 2024-04-17 450/week @ 2024-04-24 503/week @ 2024-05-01 424/week @ 2024-05-08 458/week @ 2024-05-15 416/week @ 2024-05-22 442/week @ 2024-05-29 344/week @ 2024-06-05 330/week @ 2024-06-12 364/week @ 2024-06-19 360/week @ 2024-06-26 142/week @ 2024-07-03 434/week @ 2024-07-10 463/week @ 2024-07-17

1,462 每月下载量

MIT/Apache

54KB
792 代码行

关于

基于数组的有序集合和映射数据结构,在Rust中,针对固定容量下少量元素的栈分配存储进行了优化。你所需要的只是 Eq

这个软件包是

  • 完全安全的
  • 全面文档化的
  • no_std 兼容的
  • 无依赖(除非你想集成 thiserrorserde

这个软件包旨在用于性能敏感的环境中,其中元素数量较少,迭代比查找更常见,并且你不需要固定大小。一个特别有用的特性是元素在删除时不会被重新压缩:这在替换集合中的元素或以语义方式使用存储元素的索引时非常有用。迭代顺序保证是稳定的,基于先入先出。

如果你不是在寻找这个,请查看这些替代方案!

  • smolset:当元素数量过大时自动转换为 HashSet。无序。
  • array_map:极快,固定大小。所有可能的键都必须在静态中已知。
  • sparseset:堆分配,非常适合稀疏数据和频繁迭代。稳定的顺序!
  • HashSet:堆分配,无序,需要 Hash,无边界大小。
  • BTreeSet:堆分配,有序,需要 Ord,无边界大小。
  • IndexMap:堆分配,需要 Hash,无边界大小。

这个crate提供了一套合理的便利方法,用于同时操作集合和映射,旨在与HashMapHashSet大致等价。如果您需要更多功能,请提交一个issue或PR!

依赖项

~175KB