7个稳定版本
使用旧的Rust 2015
1.3.0 | 2020年4月11日 |
---|---|
1.2.0 | 2019年1月24日 |
1.1.0 | 2017年3月26日 |
1.0.3 | 2016年8月1日 |
1.0.1 | 2016年7月31日 |
#1448 在 网络编程
1,412 每月下载量
在 5 个Crate中(2个直接)使用
21KB
311 代码行
Multi-Map
类似于 std::collection::HashMap
,但允许您使用两个不同的键来检索项目。
在开发软件堆栈时,有时某层需要存储一些上下文对象。例如,我们有一个HTTP模块,它位于某种使用HTTP的应用程序下方,位于Socket模块上方。
当创建新的连接时,Socket模块会发送一个包含新连接ID的消息。创建一个新的HTTP连接对象,并将其存储在Socket ID上,以便在Socket上到达数据时可以轻松检索。但为了通知上层关于新的HTTP连接(与其他可能正在进行的HTTP连接区分开来),我们需要给HTTP连接本身一个唯一的ID,并且我们需要一种机制通过此ID来定位HTTP连接。
简单的解决方案是将HTTP连接存储在列表中,然后迭代它们,查找匹配的Socket ID或匹配的HTTP连接ID。但这很慢。
HashMap看起来是个好主意,但您只能基于HTTP ID或Socket ID键,而不能同时基于两者。
此模块允许您创建一个MultiMap - 一个您可以按主键(HttpID)或替代ID(SocketID)查找的映射。内部使用两个映射,一个在(K1, (K2, V))上,另一个在(K2, K1)上。
支持插入、删除和迭代。可能逐渐实现std::collections::HashMap API的其余部分,但目前已发现这足够有用。