(&mut self, key: &K)
| 112 | } |
| 113 | |
| 114 | fn access(&mut self, key: &K) { |
| 115 | if let Some(&pos) = self.positions.get(key) { |
| 116 | // Move to front |
| 117 | self.order.remove(pos); |
| 118 | self.order.push_front(key.clone()); |
| 119 | self.update_positions(); |
| 120 | } else { |
| 121 | // New entry |
| 122 | self.order.push_front(key.clone()); |
| 123 | self.positions.insert(key.clone(), 0); |
| 124 | self.update_positions(); |
| 125 | } |
| 126 | } |
| 127 | |
| 128 | fn remove_lru(&mut self) -> Option<K> { |
| 129 | if let Some(key) = self.order.pop_back() { |