4 个版本 (重大变更)
| 0.4.0 | 2022 年 8 月 25 日 |
|---|---|
| 0.3.0 | 2022 年 8 月 25 日 |
| 0.2.0 | 2022 年 8 月 25 日 |
| 0.1.0 | 2022 年 8 月 24 日 |
#1321 在 数据结构 中
每月 222,411 次下载
在 182 个 crate 中使用 (直接使用 2 个)
47KB
1K SLoC
indexmap-nostd
兼容 no_std 的 indexmap crate (重新)实现。
注意: indexmap crate 已支持在 no_std 环境下编译,并且它底层使用 hashbrown crate 的 HashMap,这仍然需要某种随机初始化。然而,一些嵌入式平台根本无法提供随机初始化哈希表和类似数据结构的方法,这使得依赖于这些哈希表的代码容易受到控制输入的用户(或攻击者)的影响。
因此,indexmap-nostd 是 indexmap crate 的 (重新)实现,它将内部对 HashMap 的使用替换为 BTreeMap。
优点
此 crate 及其数据结构可用于任何嵌入式 no_std 环境,无需为 HashMap 初始化提供随机种子。
缺点
- 当前
indexmap-nostd的实现侧重于易于维护的简单代码,这与原始的indexmapcrate 相比效率较低。性能退化的一个例子是现在插入的键被重复了。 - 由于上述原因,某些方法现在需要额外的 where 约束。例如,现在
IndexMap::insert需要K: Clone。 - 我们主要关注的是使这个与
no_std兼容的实现能够为wasmparser软件包工作。这意味着我们主要提供原始indexmap软件包的功能和API的一个子集,可能不会添加我们不需要且实现或维护难度较大的功能。
依赖项
~185KB