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 在 数据结构
13KB
227 行
trashmap
此crate提供TrashMap
和TrashSet
类型,允许您直接使用键哈希来操作条目。这通常在您需要保留哈希值(例如在单个堆栈帧中)并且不希望在每次访问时承担重新哈希的成本时很有用(但是您不能使用Entry
,因为映射在过程中可能会发生变化)
Trash
类型用于表示计算出的哈希,通过Trash
进行查找很便宜。
lib.rs
:
此crate提供TrashMap
和TrashSet
类型,允许您直接使用键哈希来操作条目。这通常在您需要保留哈希值(例如在单个堆栈帧中)并且不希望在每次访问时承担重新哈希的成本时很有用(但是您不能使用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);
}
}