about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJacob Pratt <jacob@jhpratt.dev>2021-04-01 01:55:03 -0400
committerJacob Pratt <jacob@jhpratt.dev>2021-05-26 00:12:06 -0400
commit641c8cd87595016d08df39e7bd9ce795682a5b0d (patch)
treef35dda21684a605946ab42d483033ace0a2bd9c1
parent47a90f452050d4ea484206447babb07dd33c21d5 (diff)
downloadrust-641c8cd87595016d08df39e7bd9ce795682a5b0d.tar.gz
rust-641c8cd87595016d08df39e7bd9ce795682a5b0d.zip
Limit `TrustedLen` impls to core types
-rw-r--r--library/core/src/iter/range.rs27
1 files changed, 21 insertions, 6 deletions
diff --git a/library/core/src/iter/range.rs b/library/core/src/iter/range.rs
index 8d0b2b9f55c..2bd0380bad6 100644
--- a/library/core/src/iter/range.rs
+++ b/library/core/src/iter/range.rs
@@ -655,8 +655,13 @@ impl<A: Step> DoubleEndedIterator for ops::Range<A> {
     }
 }
 
-#[unstable(feature = "trusted_len", issue = "37572")]
-unsafe impl<A: Step> TrustedLen for ops::Range<A> {}
+macro_rules! impl_trusted_len_for_range {
+    ($($type:ty)*) => {$(
+        #[unstable(feature = "trusted_len", issue = "37572")]
+        unsafe impl TrustedLen for ops::Range<$type> {}
+    )*}
+}
+impl_trusted_len_for_range![char i8 i16 i32 i64 i128 isize u8 u16 u32 u64 u128 usize];
 
 #[stable(feature = "fused", since = "1.26.0")]
 impl<A: Step> FusedIterator for ops::Range<A> {}
@@ -687,8 +692,13 @@ impl<A: Step> Iterator for ops::RangeFrom<A> {
 #[stable(feature = "fused", since = "1.26.0")]
 impl<A: Step> FusedIterator for ops::RangeFrom<A> {}
 
-#[unstable(feature = "trusted_len", issue = "37572")]
-unsafe impl<A: Step> TrustedLen for ops::RangeFrom<A> {}
+macro_rules! impl_trusted_len_for_range_from {
+    ($($type:ty)*) => {$(
+        #[unstable(feature = "trusted_len", issue = "37572")]
+        unsafe impl TrustedLen for ops::RangeFrom<$type> {}
+    )*}
+}
+impl_trusted_len_for_range_from![char i8 i16 i32 i64 i128 isize u8 u16 u32 u64 u128 usize];
 
 #[stable(feature = "inclusive_range", since = "1.26.0")]
 impl<A: Step> Iterator for ops::RangeInclusive<A> {
@@ -899,8 +909,13 @@ impl<A: Step> DoubleEndedIterator for ops::RangeInclusive<A> {
     }
 }
 
-#[unstable(feature = "trusted_len", issue = "37572")]
-unsafe impl<A: Step> TrustedLen for ops::RangeInclusive<A> {}
+macro_rules! impl_trusted_len_for_range_inclusive {
+    ($($type:ty)*) => {$(
+        #[unstable(feature = "trusted_len", issue = "37572")]
+        unsafe impl TrustedLen for ops::RangeInclusive<$type> {}
+    )*}
+}
+impl_trusted_len_for_range_inclusive![char i8 i16 i32 i64 i128 isize u8 u16 u32 u64 u128 usize];
 
 #[stable(feature = "fused", since = "1.26.0")]
 impl<A: Step> FusedIterator for ops::RangeInclusive<A> {}