about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/libcore/option.rs12
1 files changed, 4 insertions, 8 deletions
diff --git a/src/libcore/option.rs b/src/libcore/option.rs
index 63c846b25ec..12e6e843056 100644
--- a/src/libcore/option.rs
+++ b/src/libcore/option.rs
@@ -634,16 +634,12 @@ impl<T> Option<T> {
     #[inline]
     #[unstable(feature = "option_filter", issue = "45860")]
     pub fn filter<P: FnOnce(&T) -> bool>(self, predicate: P) -> Self {
-        match self {
-            Some(x) => {
-                if predicate(&x) {
-                    Some(x)
-                } else {
-                    None
-                }
+        if let Some(x) = self {
+            if predicate(&x) {
+                return Some(x)
             }
-            None => None,
         }
+        None
     }
 
     /// Returns the option if it contains a value, otherwise returns `optb`.