#hash #hash-key #key-hash #map #cache #hash-values

trashmap

一种HashMap和HashSet,直接在hash上操作,而不是在键上操作,避免了重新哈希

4个版本

0.1.3 2019年5月20日
0.1.2 2019年4月10日
0.1.1 2019年4月10日
0.1.0 2019年4月10日

#2169数据结构

MIT/Apache

13KB
227

trashmap

Build Status License: MIT/Apache-2.0

此crate提供TrashMapTrashSet类型,允许您直接使用键哈希来操作条目。这通常在您需要保留哈希值(例如在单个堆栈帧中)并且不希望在每次访问时承担重新哈希的成本时很有用(但是您不能使用Entry,因为映射在过程中可能会发生变化)

Trash类型用于表示计算出的哈希,通过Trash进行查找很便宜。


lib.rs:

此crate提供TrashMapTrashSet类型,允许您直接使用键哈希来操作条目。这通常在您需要保留哈希值(例如在单个堆栈帧中)并且不希望在每次访问时承担重新哈希的成本时很有用(但是您不能使用Entry,因为映射在过程中可能会发生变化)

Trash类型用于表示计算出的哈希,通过Trash进行查找很便宜。

使用此功能的示例之一是在进行某些类型的图遍历时检查循环

use trashmap::TrashSet;
struct State {
   seen: TrashSet<str>,
}

impl State {
    fn step_into(&mut self, entry: &str) {
        let (id, empty) = self.seen.insert_check(entry);
        if !empty {
            panic!("found recursive loop!");
        }
        let children = lookup_children(entry);
        for child in children {
           self.step_into(child);
        }
        self.seen.remove(id);
    }
}

无运行时依赖