2个不稳定版本

使用旧的Rust 2015

0.2.0 2018年10月29日
0.1.0 2018年10月27日

数据库实现中排名第225

每月下载24
mihoyo-api中使用

MIT/Apache

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不返回任何内容。

getget_mut 方法与常规的 HashMap<K, V> 具有相同的签名。与返回整个底层 Vec 的键值不同,getget_mut 都返回 Vec 中的第一个元素的引用。为了获取整个 Vec 的引用,请使用 get_allget_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"]));

无运行时依赖