#hash-map #linked-hash-map #no-std #amortized #hash-set #linked-hash-set

no-std ritelinked

用户可控顺序的键值对容器,类似于HashMap

7个版本

0.3.2 2021年8月24日
0.3.1 2021年5月27日
0.2.2 2021年3月6日
0.1.0 2021年3月3日

#1980数据结构

Download history 3394/week @ 2024-03-14 3096/week @ 2024-03-21 3374/week @ 2024-03-28 3580/week @ 2024-04-04 4283/week @ 2024-04-11 4060/week @ 2024-04-18 3894/week @ 2024-04-25 4531/week @ 2024-05-02 4459/week @ 2024-05-09 4435/week @ 2024-05-16 4720/week @ 2024-05-23 4904/week @ 2024-05-30 5598/week @ 2024-06-06 5199/week @ 2024-06-13 5024/week @ 2024-06-20 3970/week @ 2024-06-27

20,834 每月下载量
30 包(9个直接使用)中使用

MIT/Apache

93KB
2.5K SLoC

RiteLinked — 用户可控顺序的键值对容器,类似于HashMap

Latest Version API Documentation

RiteLinked 提供了更新版本的 LinkedHashMapLinkedHashSet 。您可以在 stdno_std 环境中轻松使用它。

支持一些实用的功能组合,帮助您更好地将其嵌入现有代码:serdeinline-more 等。特别是,它默认使用 griddle,如果您有大量数据,它可以有效地帮助您减少可能的尾部延迟。(当然,也可以使用 hashbrown

使用方法

ritelinked 添加到 Cargo.toml

ritelinked = "x.y.z"

编写一些这样的代码

let mut lru_cache = LinkedHashMap::new();
let key = "key".to_owned();
let _cached_val = lru_cache
    .raw_entry_mut()
    .from_key(&key)
    .or_insert_with(|| (key.clone(), 42));

基准测试

ritelinked              time:   [165.09 ns 165.40 ns 165.79 ns]                       
Found 12 outliers among 100 measurements (12.00%)
  5 (5.00%) high mild
  7 (7.00%) high severe

hashlink                time:   [168.11 ns 168.48 ns 168.96 ns]                     
Found 13 outliers among 100 measurements (13.00%)
  2 (2.00%) high mild
  11 (11.00%) high severe

linked-hash-map         time:   [370.98 ns 382.59 ns 397.44 ns]                            
Found 7 outliers among 100 measurements (7.00%)
  7 (7.00%) high mild

致谢

这是流行的包 hashlink 的分支,但已对代码进行了更多调整和改进。

许可证

此库的许可证与 hashlink 相同,它采用以下任一许可证:

任选其一。

依赖项

~0.8–1.2MB
~19K SLoC