]> git.lizzy.rs Git - rust.git/commitdiff
Implement TrustedLen for Take<Repeat> and Take<RangeFrom>
authoroberien <jaro.fietz@gmx.de>
Thu, 18 Jan 2018 17:40:08 +0000 (18:40 +0100)
committeroberien <jaro.fietz@gmx.de>
Sun, 4 Feb 2018 15:09:32 +0000 (16:09 +0100)
src/libcore/iter/mod.rs
src/libcore/iter/range.rs
src/libcore/iter/sources.rs

index 7314fac282b664fe2e92de6ee8fd7a694e955e18..bf8367d85fd1085ad6d42bb05eceae760a95496a 100644 (file)
@@ -2322,6 +2322,9 @@ impl<I> ExactSizeIterator for Take<I> where I: ExactSizeIterator {}
 #[unstable(feature = "fused", issue = "35602")]
 impl<I> FusedIterator for Take<I> where I: FusedIterator {}
 
+#[unstable(feature = "trusted_len", issue = "37572")]
+unsafe impl<I: TrustedLen> TrustedLen for Take<I> {}
+
 /// An iterator to maintain state while iterating another iterator.
 ///
 /// This `struct` is created by the [`scan`] method on [`Iterator`]. See its
index 66a76a24df45afc983395776ad5c69f83c651d38..5af6df3e1cb471fd5aa54e4982f959992ff525eb 100644 (file)
@@ -325,6 +325,9 @@ fn nth(&mut self, n: usize) -> Option<A> {
 #[unstable(feature = "fused", issue = "35602")]
 impl<A: Step> FusedIterator for ops::RangeFrom<A> {}
 
+#[unstable(feature = "trusted_len", issue = "37572")]
+unsafe impl<A: Step> TrustedLen for ops::RangeFrom<A> {}
+
 #[unstable(feature = "inclusive_range", reason = "recently added, follows RFC", issue = "28237")]
 impl<A: Step> Iterator for ops::RangeInclusive<A> {
     type Item = A;
index b405f35d5e4dbac5316db6491d50d87c3dc16403..b05a893e66104dc9cf517a66fb0598e60f13143f 100644 (file)
@@ -44,6 +44,9 @@ fn next_back(&mut self) -> Option<A> { Some(self.element.clone()) }
 #[unstable(feature = "fused", issue = "35602")]
 impl<A: Clone> FusedIterator for Repeat<A> {}
 
+#[unstable(feature = "trusted_len", issue = "37572")]
+unsafe impl<A: Clone> TrustedLen for Repeat<A> {}
+
 /// Creates a new iterator that endlessly repeats a single element.
 ///
 /// The `repeat()` function repeats a single value over and over and over and