diff options
| author | Clar Fon <them@lightdark.xyz> | 2018-12-17 21:28:06 -0500 |
|---|---|---|
| committer | Clar Fon <them@lightdark.xyz> | 2019-01-22 17:45:11 -0500 |
| commit | 4c28b2c4b171be143d2a5ca7c0c389e9d3d7f26a (patch) | |
| tree | 83f3fd2112a882dad35c26d4dce57943607c3be7 | |
| parent | 5971ccc08d8bfadeb0614c4555ffd32c51066cdc (diff) | |
| download | rust-4c28b2c4b171be143d2a5ca7c0c389e9d3d7f26a.tar.gz rust-4c28b2c4b171be143d2a5ca7c0c389e9d3d7f26a.zip | |
Move nontrivial constructors to inherent methods
| -rw-r--r-- | src/libcore/iter/adapters/mod.rs | 70 | ||||
| -rw-r--r-- | src/libcore/iter/traits/iterator.rs | 15 |
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. |
