about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/libcore/iter/adapters/chain.rs21
1 files changed, 10 insertions, 11 deletions
diff --git a/src/libcore/iter/adapters/chain.rs b/src/libcore/iter/adapters/chain.rs
index 0100e62fae6..aadecdfbb65 100644
--- a/src/libcore/iter/adapters/chain.rs
+++ b/src/libcore/iter/adapters/chain.rs
@@ -130,17 +130,16 @@ where
 
     #[inline]
     fn last(self) -> Option<A::Item> {
-        match self {
-            Chain { a: Some(a), b: Some(b) } => {
-                // Must exhaust a before b.
-                let a_last = a.last();
-                let b_last = b.last();
-                b_last.or(a_last)
-            }
-            Chain { a: Some(a), b: None } => a.last(),
-            Chain { a: None, b: Some(b) } => b.last(),
-            Chain { a: None, b: None } => None,
-        }
+        // Must exhaust a before b.
+        let a_last = match self.a {
+            Some(a) => a.last(),
+            None => None,
+        };
+        let b_last = match self.b {
+            Some(b) => b.last(),
+            None => None,
+        };
+        b_last.or(a_last)
     }
 
     #[inline]