Skip to content

Commit 641c8cd

Browse files
committed
Limit TrustedLen impls to core types
1 parent 47a90f4 commit 641c8cd

File tree

1 file changed

+21
-6
lines changed

1 file changed

+21
-6
lines changed

library/core/src/iter/range.rs

+21-6
Original file line numberDiff line numberDiff line change
@@ -655,8 +655,13 @@ impl<A: Step> DoubleEndedIterator for ops::Range<A> {
655655
}
656656
}
657657

658-
#[unstable(feature = "trusted_len", issue = "37572")]
659-
unsafe impl<A: Step> TrustedLen for ops::Range<A> {}
658+
macro_rules! impl_trusted_len_for_range {
659+
($($type:ty)*) => {$(
660+
#[unstable(feature = "trusted_len", issue = "37572")]
661+
unsafe impl TrustedLen for ops::Range<$type> {}
662+
)*}
663+
}
664+
impl_trusted_len_for_range![char i8 i16 i32 i64 i128 isize u8 u16 u32 u64 u128 usize];
660665

661666
#[stable(feature = "fused", since = "1.26.0")]
662667
impl<A: Step> FusedIterator for ops::Range<A> {}
@@ -687,8 +692,13 @@ impl<A: Step> Iterator for ops::RangeFrom<A> {
687692
#[stable(feature = "fused", since = "1.26.0")]
688693
impl<A: Step> FusedIterator for ops::RangeFrom<A> {}
689694

690-
#[unstable(feature = "trusted_len", issue = "37572")]
691-
unsafe impl<A: Step> TrustedLen for ops::RangeFrom<A> {}
695+
macro_rules! impl_trusted_len_for_range_from {
696+
($($type:ty)*) => {$(
697+
#[unstable(feature = "trusted_len", issue = "37572")]
698+
unsafe impl TrustedLen for ops::RangeFrom<$type> {}
699+
)*}
700+
}
701+
impl_trusted_len_for_range_from![char i8 i16 i32 i64 i128 isize u8 u16 u32 u64 u128 usize];
692702

693703
#[stable(feature = "inclusive_range", since = "1.26.0")]
694704
impl<A: Step> Iterator for ops::RangeInclusive<A> {
@@ -899,8 +909,13 @@ impl<A: Step> DoubleEndedIterator for ops::RangeInclusive<A> {
899909
}
900910
}
901911

902-
#[unstable(feature = "trusted_len", issue = "37572")]
903-
unsafe impl<A: Step> TrustedLen for ops::RangeInclusive<A> {}
912+
macro_rules! impl_trusted_len_for_range_inclusive {
913+
($($type:ty)*) => {$(
914+
#[unstable(feature = "trusted_len", issue = "37572")]
915+
unsafe impl TrustedLen for ops::RangeInclusive<$type> {}
916+
)*}
917+
}
918+
impl_trusted_len_for_range_inclusive![char i8 i16 i32 i64 i128 isize u8 u16 u32 u64 u128 usize];
904919

905920
#[stable(feature = "fused", since = "1.26.0")]
906921
impl<A: Step> FusedIterator for ops::RangeInclusive<A> {}

0 commit comments

Comments
 (0)