]> git.lizzy.rs Git - rust.git/commitdiff
remove ExactSizeIterator from RangeInclusive<u/isize>
authorAlex Burka <durka42@gmail.com>
Sun, 11 Sep 2016 01:55:15 +0000 (01:55 +0000)
committerAlex Burka <durka42@gmail.com>
Mon, 12 Sep 2016 17:06:53 +0000 (17:06 +0000)
src/libcore/iter/range.rs
src/test/run-pass/range_inclusive.rs

index 66d05d81d80cd7e92157bfd865eb5d353713791f..38afcb6a65e82f4029c328de62531cb3b769c7a0 100644 (file)
@@ -466,7 +466,11 @@ macro_rules! range_exact_iter_impl {
     ($($t:ty)*) => ($(
         #[stable(feature = "rust1", since = "1.0.0")]
         impl ExactSizeIterator for ops::Range<$t> { }
+    )*)
+}
 
+macro_rules! range_incl_exact_iter_impl {
+    ($($t:ty)*) => ($(
         #[unstable(feature = "inclusive_range",
                    reason = "recently added, follows RFC",
                    issue = "28237")]
@@ -500,9 +504,12 @@ fn size_hint(&self) -> (usize, Option<usize>) {
     }
 }
 
-// Ranges of u64 and i64 are excluded because they cannot guarantee having
-// a length <= usize::MAX, which is required by ExactSizeIterator.
+// These macros generate `ExactSizeIterator` impls for various range types.
+// Range<{u,i}64> and RangeInclusive<{u,i}{32,64,size}> are excluded
+// because they cannot guarantee having a length <= usize::MAX, which is
+// required by ExactSizeIterator.
 range_exact_iter_impl!(usize u8 u16 u32 isize i8 i16 i32);
+range_incl_exact_iter_impl!(u8 u16 i8 i16);
 
 #[stable(feature = "rust1", since = "1.0.0")]
 impl<A: Step + Clone> DoubleEndedIterator for ops::Range<A> where
index aaf129e7b8e4abf413e65847100a8dcf03f95ab8..cfa9f6e36e9bcb37fce6b735ed61b6e3d925ff08 100644 (file)
@@ -75,7 +75,7 @@ pub fn main() {
 
     // test the size hints and emptying
     let mut long = 0...255u8;
-    let mut short = 42...42;
+    let mut short = 42...42u8;
     assert_eq!(long.size_hint(), (256, Some(256)));
     assert_eq!(short.size_hint(), (1, Some(1)));
     long.next();