about summary refs log tree commit diff
diff options
context:
space:
mode:
authorYuri Kunde Schlesner <yuriks@yuriks.net>2014-04-18 03:39:25 -0300
committerYuri Kunde Schlesner <yuriks@yuriks.net>2014-04-18 03:39:25 -0300
commit04784540efe156398eee4fba535f5a24b8bd649e (patch)
tree11321c2009fdce87f821e39994b875183b85eb03
parent0c23140aaf16515227b0403538eb4361dec54ae3 (diff)
downloadrust-04784540efe156398eee4fba535f5a24b8bd649e.tar.gz
rust-04784540efe156398eee4fba535f5a24b8bd649e.zip
Remove redundant variable in LruCache::put
-rw-r--r--src/libcollections/lru_cache.rs23
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();
+                }
             }
         }
     }