about summary refs log tree commit diff
diff options
context:
space:
mode:
authorClar Fon <them@lightdark.xyz>2018-12-17 21:28:06 -0500
committerClar Fon <them@lightdark.xyz>2019-01-22 17:45:11 -0500
commit4c28b2c4b171be143d2a5ca7c0c389e9d3d7f26a (patch)
tree83f3fd2112a882dad35c26d4dce57943607c3be7
parent5971ccc08d8bfadeb0614c4555ffd32c51066cdc (diff)
downloadrust-4c28b2c4b171be143d2a5ca7c0c389e9d3d7f26a.tar.gz
rust-4c28b2c4b171be143d2a5ca7c0c389e9d3d7f26a.zip
Move nontrivial constructors to inherent methods
-rw-r--r--src/libcore/iter/adapters/mod.rs70
-rw-r--r--src/libcore/iter/traits/iterator.rs15
2 files changed, 60 insertions, 25 deletions
diff --git a/src/libcore/iter/adapters/mod.rs b/src/libcore/iter/adapters/mod.rs
index 1368775c6bf..8bd064021e6 100644
--- a/src/libcore/iter/adapters/mod.rs
+++ b/src/libcore/iter/adapters/mod.rs
@@ -339,8 +339,13 @@ unsafe impl<'a, I, T: 'a> TrustedLen for Cloned<I>
 #[must_use = "iterators are lazy and do nothing unless consumed"]
 #[stable(feature = "rust1", since = "1.0.0")]
 pub struct Cycle<I> {
-    pub(super) orig: I,
-    pub(super) iter: I,
+    orig: I,
+    iter: I,
+}
+impl<I: Clone> Cycle<I> {
+    pub(super) fn new(iter: I) -> Cycle<I> {
+        Cycle { orig: iter.clone(), iter }
+    }
 }
 
 #[stable(feature = "rust1", since = "1.0.0")]
@@ -380,9 +385,15 @@ impl<I> FusedIterator for Cycle<I> where I: Clone + Iterator {}
 #[stable(feature = "iterator_step_by", since = "1.28.0")]
 #[derive(Clone, Debug)]
 pub struct StepBy<I> {
-    pub(super) iter: I,
-    pub(super) step: usize,
-    pub(super) first_take: bool,
+    iter: I,
+    step: usize,
+    first_take: bool,
+}
+impl<I> StepBy<I> {
+    pub(super) fn new(iter: I, step: usize) -> StepBy<I> {
+        assert!(step != 0);
+        StepBy { iter, step: step - 1, first_take: true }
+    }
 }
 
 #[stable(feature = "iterator_step_by", since = "1.28.0")]
@@ -867,8 +878,13 @@ impl<B, I: FusedIterator, F> FusedIterator for FilterMap<I, F>
 #[must_use = "iterators are lazy and do nothing unless consumed"]
 #[stable(feature = "rust1", since = "1.0.0")]
 pub struct Enumerate<I> {
-    pub(super) iter: I,
-    pub(super) count: usize,
+    iter: I,
+    count: usize,
+}
+impl<I> Enumerate<I> {
+    pub(super) fn new(iter: I) -> Enumerate<I> {
+        Enumerate { iter, count: 0 }
+    }
 }
 
 #[stable(feature = "rust1", since = "1.0.0")]
@@ -1028,9 +1044,14 @@ unsafe impl<I> TrustedLen for Enumerate<I>
 #[must_use = "iterators are lazy and do nothing unless consumed"]
 #[stable(feature = "rust1", since = "1.0.0")]
 pub struct Peekable<I: Iterator> {
-    pub(super) iter: I,
+    iter: I,
     /// Remember a peeked value, even if it was None.
-    pub(super) peeked: Option<Option<I::Item>>,
+    peeked: Option<Option<I::Item>>,
+}
+impl<I: Iterator> Peekable<I> {
+    pub(super) fn new(iter: I) -> Peekable<I> {
+        Peekable { iter, peeked: None }
+    }
 }
 
 // Peekable must remember if a None has been seen in the `.peek()` method.
@@ -1180,9 +1201,14 @@ impl<I: Iterator> Peekable<I> {
 #[stable(feature = "rust1", since = "1.0.0")]
 #[derive(Clone)]
 pub struct SkipWhile<I, P> {
-    pub(super) iter: I,
-    pub(super) flag: bool,
-    pub(super) predicate: P,
+    iter: I,
+    flag: bool,
+    predicate: P,
+}
+impl<I, P> SkipWhile<I, P> {
+    pub(super) fn new(iter: I, predicate: P) -> SkipWhile<I, P> {
+        SkipWhile { iter, flag: false, predicate }
+    }
 }
 
 #[stable(feature = "core_impl_debug", since = "1.9.0")]
@@ -1263,9 +1289,14 @@ impl<I, P> FusedIterator for SkipWhile<I, P>
 #[stable(feature = "rust1", since = "1.0.0")]
 #[derive(Clone)]
 pub struct TakeWhile<I, P> {
-    pub(super) iter: I,
-    pub(super) flag: bool,
-    pub(super) predicate: P,
+    iter: I,
+    flag: bool,
+    predicate: P,
+}
+impl<I, P> TakeWhile<I, P> {
+    pub(super) fn new(iter: I, predicate: P) -> TakeWhile<I, P> {
+        TakeWhile { iter, flag: false, predicate }
+    }
 }
 
 #[stable(feature = "core_impl_debug", since = "1.9.0")]
@@ -1632,8 +1663,13 @@ impl<B, I, St, F> Iterator for Scan<I, St, F> where
 #[must_use = "iterators are lazy and do nothing unless consumed"]
 #[stable(feature = "rust1", since = "1.0.0")]
 pub struct Fuse<I> {
-    pub(super) iter: I,
-    pub(super) done: bool
+    iter: I,
+    done: bool
+}
+impl<I> Fuse<I> {
+    pub(super) fn new(iter: I) -> Fuse<I> {
+        Fuse { iter, done: false }
+    }
 }
 
 #[stable(feature = "fused", since = "1.26.0")]
diff --git a/src/libcore/iter/traits/iterator.rs b/src/libcore/iter/traits/iterator.rs
index 62029b16952..44e29fd813a 100644
--- a/src/libcore/iter/traits/iterator.rs
+++ b/src/libcore/iter/traits/iterator.rs
@@ -366,8 +366,7 @@ pub trait Iterator {
     #[inline]
     #[stable(feature = "iterator_step_by", since = "1.28.0")]
     fn step_by(self, step: usize) -> StepBy<Self> where Self: Sized {
-        assert!(step != 0);
-        StepBy{iter: self, step: step - 1, first_take: true}
+        StepBy::new(self, step)
     }
 
     /// Takes two iterators and creates a new iterator over both in sequence.
@@ -771,7 +770,7 @@ pub trait Iterator {
     #[inline]
     #[stable(feature = "rust1", since = "1.0.0")]
     fn enumerate(self) -> Enumerate<Self> where Self: Sized {
-        Enumerate { iter: self, count: 0 }
+        Enumerate::new(self)
     }
 
     /// Creates an iterator which can use `peek` to look at the next element of
@@ -817,7 +816,7 @@ pub trait Iterator {
     #[inline]
     #[stable(feature = "rust1", since = "1.0.0")]
     fn peekable(self) -> Peekable<Self> where Self: Sized {
-        Peekable{iter: self, peeked: None}
+        Peekable::new(self)
     }
 
     /// Creates an iterator that [`skip`]s elements based on a predicate.
@@ -880,7 +879,7 @@ pub trait Iterator {
     fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P> where
         Self: Sized, P: FnMut(&Self::Item) -> bool,
     {
-        SkipWhile { iter: self, flag: false, predicate }
+        SkipWhile::new(self, predicate)
     }
 
     /// Creates an iterator that yields elements based on a predicate.
@@ -960,7 +959,7 @@ pub trait Iterator {
     fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P> where
         Self: Sized, P: FnMut(&Self::Item) -> bool,
     {
-        TakeWhile { iter: self, flag: false, predicate }
+        TakeWhile::new(self, predicate)
     }
 
     /// Creates an iterator that skips the first `n` elements.
@@ -1225,7 +1224,7 @@ pub trait Iterator {
     #[inline]
     #[stable(feature = "rust1", since = "1.0.0")]
     fn fuse(self) -> Fuse<Self> where Self: Sized {
-        Fuse{iter: self, done: false}
+        Fuse::new(self)
     }
 
     /// Do something with each element of an iterator, passing the value on.
@@ -2310,7 +2309,7 @@ pub trait Iterator {
     #[stable(feature = "rust1", since = "1.0.0")]
     #[inline]
     fn cycle(self) -> Cycle<Self> where Self: Sized + Clone {
-        Cycle{orig: self.clone(), iter: self}
+        Cycle::new(self)
     }
 
     /// Sums the elements of an iterator.