diff options
| author | Yuri Kunde Schlesner <yuriks@yuriks.net> | 2014-04-18 03:39:25 -0300 |
|---|---|---|
| committer | Yuri Kunde Schlesner <yuriks@yuriks.net> | 2014-04-18 03:39:25 -0300 |
| commit | 04784540efe156398eee4fba535f5a24b8bd649e (patch) | |
| tree | 11321c2009fdce87f821e39994b875183b85eb03 | |
| parent | 0c23140aaf16515227b0403538eb4361dec54ae3 (diff) | |
| download | rust-04784540efe156398eee4fba535f5a24b8bd649e.tar.gz rust-04784540efe156398eee4fba535f5a24b8bd649e.zip | |
Remove redundant variable in LruCache::put
| -rw-r--r-- | src/libcollections/lru_cache.rs | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/src/libcollections/lru_cache.rs b/src/libcollections/lru_cache.rs index 87b1fee1d27..84553782104 100644 --- a/src/libcollections/lru_cache.rs +++ b/src/libcollections/lru_cache.rs @@ -114,10 +114,8 @@ impl<K: Hash + TotalEq, V> LruCache<K, V> { /// Put a key-value pair into cache. pub fn put(&mut self, k: K, v: V) { - let mut key_existed = false; let (node_ptr, node_opt) = match self.map.find_mut(&KeyRef{k: &k}) { Some(node) => { - key_existed = true; node.value = Some(v); let node_ptr: *mut LruEntry<K, V> = &mut **node; (node_ptr, None) @@ -128,15 +126,18 @@ impl<K: Hash + TotalEq, V> LruCache<K, V> { (node_ptr, Some(node)) } }; - if key_existed { - self.detach(node_ptr); - self.attach(node_ptr); - } else { - let keyref = unsafe { (*node_ptr).key.as_ref().unwrap() }; - self.map.swap(KeyRef{k: keyref}, node_opt.unwrap()); - self.attach(node_ptr); - if self.len() > self.capacity() { - self.remove_lru(); + match node_opt { + None => { + self.detach(node_ptr); + self.attach(node_ptr); + } + Some(node) => { + let keyref = unsafe { (*node_ptr).key.as_ref().unwrap() }; + self.map.swap(KeyRef{k: keyref}, node); + self.attach(node_ptr); + if self.len() > self.capacity() { + self.remove_lru(); + } } } } |
