2个不稳定版本
使用旧的Rust 2015
0.2.0 | 2018年10月29日 |
---|---|
0.1.0 | 2018年10月27日 |
在数据库实现中排名第225
每月下载24次
在mihoyo-api中使用
14KB
221 行
Collecting HashMap
这是一个将所有值存储为一个值Vec而不是单个值的HashMap。所以CollectingHashMap<K, V>
基本上等同于HashMap<K, Vec<V>>
,并对API进行了一些调整以使其更容易使用
lib.rs
:
Collecting HashMap
这是一个允许用户为每个K
键存储多个V
值的HashMap。目前它是通过内部保持一个HashMap<K, Vec<V>>
并转发大多数操作到那个HashMap
来实现的。在一些调用中,它不仅进行转发,还为了使API尽可能类似于常规的HashMap<K, V>
。主要区别在于insert
方法。由于它不会在插入另一个相同K
的值时替换原始值,因此这个insert
不返回任何内容。
get
和 get_mut
方法与常规的 HashMap<K, V>
具有相同的签名。与返回整个底层 Vec
的键值不同,get
和 get_mut
都返回 Vec
中的第一个元素的引用。为了获取整个 Vec
的引用,请使用 get_all
和 get_all_mut
。
Entry
API 在键的整个底层 Vec
上操作。
示例
use collecting_hashmap::CollectingHashMap;
let mut map = CollectingHashMap::new();
map.insert("voltron", "black");
map.insert("voltron", "red");
map.insert("voltron", "green");
map.insert("voltron", "blue");
map.insert("voltron", "yellow");
assert_eq!(map.get_all("voltron"), Some(&vec!["black", "red", "green", "blue", "yellow"]));
use collecting_hashmap::CollectingHashMap;
let query_string = vec![
("q", "query1"),
("t", "0m2s"),
("q", "query2"),
("q", "query3"),
];
let map = query_string.into_iter().collect::<CollectingHashMap<_, _>>();
assert_eq!(map.get_all("q"), Some(&vec!["query1", "query2", "query3"]));