]> git.lizzy.rs Git - rust.git/commitdiff
Add `min` and `last` specialisations for `Range`
authorvarkor <github@varkor.com>
Mon, 8 Jan 2018 18:46:40 +0000 (18:46 +0000)
committervarkor <github@varkor.com>
Tue, 9 Jan 2018 19:37:44 +0000 (19:37 +0000)
src/libcore/iter/range.rs
src/libcore/tests/iter.rs

index d6c1420a03c296721c5114fa01b361115fc3792d..66a76a24df45afc983395776ad5c69f83c651d38 100644 (file)
@@ -252,6 +252,16 @@ fn nth(&mut self, n: usize) -> Option<A> {
         None
     }
 
+    #[inline]
+    fn last(mut self) -> Option<A> {
+        self.next_back()
+    }
+
+    #[inline]
+    fn min(mut self) -> Option<A> {
+        self.next()
+    }
+
     #[inline]
     fn max(mut self) -> Option<A> {
         self.next_back()
index 9cbec8f9e6e88e19316cd1253b2a37fbee3d96e6..8997cf9c6bff9d1e50af8d14e7efeb6582b6012a 100644 (file)
@@ -1353,10 +1353,14 @@ fn test_range_step() {
 }
 
 #[test]
-fn test_range_max() {
-    assert_eq!((0..100).max(), Some(99));
-    assert_eq!((-20..-10).max(), Some(-11));
-    assert_eq!((1..1).max(), None);
+fn test_range_last_max() {
+    assert_eq!((0..20).last(), Some(19));
+    assert_eq!((-20..0).last(), Some(-1));
+    assert_eq!((5..5).last(), None);
+
+    assert_eq!((0..20).max(), Some(19));
+    assert_eq!((-20..0).max(), Some(-1));
+    assert_eq!((5..5).max(), None);
 }
 
 #[test]
@@ -1376,6 +1380,13 @@ fn test_range_inclusive_last_max() {
     assert_eq!(r.max(), None);
 }
 
+#[test]
+fn test_range_min() {
+    assert_eq!((0..20).min(), Some(0));
+    assert_eq!((-20..0).min(), Some(-20));
+    assert_eq!((5..5).min(), None);
+}
+
 #[test]
 fn test_range_inclusive_min() {
     assert_eq!((0..=20).min(), Some(0));