about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/libstd/option.rs6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/libstd/option.rs b/src/libstd/option.rs
index b70c8e17259..e4d843d8882 100644
--- a/src/libstd/option.rs
+++ b/src/libstd/option.rs
@@ -311,10 +311,10 @@ impl<T> Option<T> {
     /// Fails if the value equals `None`.
     #[inline]
     pub fn take_unwrap(&mut self) -> T {
-        if self.is_none() {
-            fail!("called `Option::take_unwrap()` on a `None` value")
+        match self.take() {
+            Some(x) => x,
+            None => fail!("called `Option::take_unwrap()` on a `None` value")
         }
-        self.take().unwrap()
     }
 
     /// Gets an immutable reference to the value inside an option.