use std::collections::HashMap;
use std::collections::hash_map::Entry::*;
fn hook(k: &str, v: &str) {}
fn tt(k: String, v: String) -> Option<String> {
let mut a: HashMap<String, String> = HashMap::new();
match a.entry(k) {
Occupied(mut occupied) => {
let old = occupied.insert(v);
//hook(&k, &old);
Some(old)
}
Vacant(vacant) => {
let v = vacant.insert(v);
let k = vacant.key(); // Why doesn't it work?
//hook(&k, v);
None
}
}
}
我希望在键被插入到HashMap中后立即调用hook
函数。看来我需要使用Entry
,但是我无法在vacant.insert
之后立即调用vacant.key()
。
insert
方法并使用Self
后,已经失去了您的“空闲”对象。那么先获取key
再插入值怎么样?我不太明白您为什么需要它?您已经有了键k
。 - Victor Polevoyk
已经被entry
使用了。 - colinfang