(&self, k: K, f: F)
| 553 | } |
| 554 | |
| 555 | pub fn get_or_create<F>(&self, k: K, f: F) -> V |
| 556 | where |
| 557 | F: FnOnce() -> V, |
| 558 | V: Clone, |
| 559 | { |
| 560 | let index = self.hash_key(&k); |
| 561 | let mut ht = self.hash_table_list[index].lock().unwrap(); |
| 562 | match ht.get(&k) { |
| 563 | Some(v) => v.clone(), |
| 564 | None => { |
| 565 | let new_v = f(); |
| 566 | ht.insert(k, new_v.clone()); |
| 567 | new_v |
| 568 | } |
| 569 | } |
| 570 | } |
| 571 | |
| 572 | pub fn modify_or_insert<M, I>(&self, k: K, modify: M, insert: I) |
| 573 | where |