the official term is mutable references, be more explicit about that
[rust-101.git] / solutions / src / counter.rs
index afea9d04654d5e85452f7233318b93c588645879..319058e51796f2e7fd34bf9686687276137a5861 100644 (file)
@@ -11,19 +11,19 @@ impl ConcurrentCounter {
     }
 
     pub fn increment(&self, by: usize) {
-        let mut counter = self.0.write().unwrap();
+        let mut counter = self.0.write().unwrap_or_else(|e| e.into_inner());
         *counter = *counter + by;
     }
 
     pub fn compare_and_inc(&self, test: usize, by: usize) {
-        let mut counter = self.0.write().unwrap();
+        let mut counter = self.0.write().unwrap_or_else(|e| e.into_inner());
         if *counter == test {
             *counter += by;
         }
     }
 
     pub fn get(&self) -> usize {
-        let counter = self.0.read().unwrap();
+        let counter = self.0.read().unwrap_or_else(|e| e.into_inner());
         *counter
     }
 }