about summary refs log tree commit diff
diff options
context:
space:
mode:
authorClar Fon <them@lightdark.xyz>2018-12-17 20:35:23 -0500
committerClar Fon <them@lightdark.xyz>2019-01-22 17:45:11 -0500
commit53b400c30cfb73fc622186086e7315c751f5cb91 (patch)
tree8677d8f9b803395c658123edf96c00670d7e2507
parent7e4177311adbeb7a1fa64c1f4e1f6610cf96973d (diff)
downloadrust-53b400c30cfb73fc622186086e7315c751f5cb91.tar.gz
rust-53b400c30cfb73fc622186086e7315c751f5cb91.zip
Don't expose FlattenCompat to Iterator
-rw-r--r--src/libcore/iter/adapters/flatten.rs28
-rw-r--r--src/libcore/iter/adapters/mod.rs1
-rw-r--r--src/libcore/iter/mod.rs2
-rw-r--r--src/libcore/iter/traits/iterator.rs6
4 files changed, 24 insertions, 13 deletions
diff --git a/src/libcore/iter/adapters/flatten.rs b/src/libcore/iter/adapters/flatten.rs
index b88e91fad3b..40f6865d38b 100644
--- a/src/libcore/iter/adapters/flatten.rs
+++ b/src/libcore/iter/adapters/flatten.rs
@@ -14,7 +14,12 @@ use super::Map;
 #[must_use = "iterators are lazy and do nothing unless consumed"]
 #[stable(feature = "rust1", since = "1.0.0")]
 pub struct FlatMap<I, U: IntoIterator, F> {
-    pub(in super::super) inner: FlattenCompat<Map<I, F>, <U as IntoIterator>::IntoIter>
+    inner: FlattenCompat<Map<I, F>, <U as IntoIterator>::IntoIter>
+}
+impl<I: Iterator, U: IntoIterator, F: FnMut(I::Item) -> U> FlatMap<I, U, F> {
+    pub(in super::super) fn new(iter: I, f: F) -> FlatMap<I, U, F> {
+        FlatMap { inner: FlattenCompat::new(iter.map(f)) }
+    }
 }
 
 #[stable(feature = "rust1", since = "1.0.0")]
@@ -100,7 +105,13 @@ impl<I, U, F> FusedIterator for FlatMap<I, U, F>
 #[stable(feature = "iterator_flatten", since = "1.29.0")]
 pub struct Flatten<I: Iterator>
 where I::Item: IntoIterator {
-    pub(in super::super) inner: FlattenCompat<I, <I::Item as IntoIterator>::IntoIter>,
+    inner: FlattenCompat<I, <I::Item as IntoIterator>::IntoIter>,
+}
+impl<I: Iterator> Flatten<I>
+where I::Item: IntoIterator {
+    pub(in super::super) fn new(iter: I) -> Flatten<I> {
+        Flatten { inner: FlattenCompat::new(iter) }
+    }
 }
 
 #[stable(feature = "iterator_flatten", since = "1.29.0")]
@@ -177,19 +188,20 @@ impl<I, U> FusedIterator for Flatten<I>
     where I: FusedIterator, U: Iterator,
           I::Item: IntoIterator<IntoIter = U, Item = U::Item> {}
 
-/// Adapts an iterator by flattening it, for use in `flatten()` and `flat_map()`.
-pub(in super::super) fn flatten_compat<I, U>(iter: I) -> FlattenCompat<I, U> {
-    FlattenCompat { iter, frontiter: None, backiter: None }
-}
-
 /// Real logic of both `Flatten` and `FlatMap` which simply delegate to
 /// this type.
 #[derive(Clone, Debug)]
-pub(in super::super) struct FlattenCompat<I, U> {
+struct FlattenCompat<I, U> {
     iter: I,
     frontiter: Option<U>,
     backiter: Option<U>,
 }
+impl<I, U> FlattenCompat<I, U> {
+    /// Adapts an iterator by flattening it, for use in `flatten()` and `flat_map()`.
+    fn new(iter: I) -> FlattenCompat<I, U> {
+        FlattenCompat { iter, frontiter: None, backiter: None }
+    }
+}
 
 impl<I, U> Iterator for FlattenCompat<I, U>
     where I: Iterator, U: Iterator,
diff --git a/src/libcore/iter/adapters/mod.rs b/src/libcore/iter/adapters/mod.rs
index 355f86f31ce..869329a007f 100644
--- a/src/libcore/iter/adapters/mod.rs
+++ b/src/libcore/iter/adapters/mod.rs
@@ -13,7 +13,6 @@ mod zip;
 pub use self::chain::Chain;
 pub use self::flatten::{FlatMap, Flatten};
 pub use self::zip::Zip;
-pub(super) use self::flatten::{FlattenCompat, flatten_compat};
 pub(super) use self::zip::ZipImpl;
 pub(crate) use self::zip::TrustedRandomAccess;
 
diff --git a/src/libcore/iter/mod.rs b/src/libcore/iter/mod.rs
index 209cf6d9451..024b9ff9c4f 100644
--- a/src/libcore/iter/mod.rs
+++ b/src/libcore/iter/mod.rs
@@ -353,7 +353,7 @@ pub use self::adapters::Flatten;
 #[unstable(feature = "iter_copied", issue = "57127")]
 pub use self::adapters::Copied;
 
-use self::adapters::{flatten_compat, ZipImpl};
+use self::adapters::ZipImpl;
 pub(crate) use self::adapters::TrustedRandomAccess;
 
 mod range;
diff --git a/src/libcore/iter/traits/iterator.rs b/src/libcore/iter/traits/iterator.rs
index bb4549dc903..2a3079838b0 100644
--- a/src/libcore/iter/traits/iterator.rs
+++ b/src/libcore/iter/traits/iterator.rs
@@ -3,7 +3,7 @@ use ops::Try;
 
 use super::super::LoopState;
 use super::super::{Chain, Cycle, Copied, Cloned, Enumerate, Filter, FilterMap, Fuse};
-use super::super::{Flatten, FlatMap, flatten_compat};
+use super::super::{Flatten, FlatMap};
 use super::super::{Inspect, Map, Peekable, Scan, Skip, SkipWhile, StepBy, Take, TakeWhile, Rev};
 use super::super::{Zip, Sum, Product};
 use super::super::{FromIterator, ZipImpl};
@@ -1098,7 +1098,7 @@ pub trait Iterator {
     fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
         where Self: Sized, U: IntoIterator, F: FnMut(Self::Item) -> U,
     {
-        FlatMap { inner: flatten_compat(self.map(f)) }
+        FlatMap::new(self, f)
     }
 
     /// Creates an iterator that flattens nested structure.
@@ -1166,7 +1166,7 @@ pub trait Iterator {
     #[stable(feature = "iterator_flatten", since = "1.29.0")]
     fn flatten(self) -> Flatten<Self>
     where Self: Sized, Self::Item: IntoIterator {
-        Flatten { inner: flatten_compat(self) }
+        Flatten::new(self)
     }
 
     /// Creates an iterator which ends after the first [`None`].