Skip to content

Commit 4c28b2c

Browse files
author
Clar Fon
committed
Move nontrivial constructors to inherent methods
1 parent 5971ccc commit 4c28b2c

File tree

2 files changed

+60
-25
lines changed

2 files changed

+60
-25
lines changed

src/libcore/iter/adapters/mod.rs

Lines changed: 53 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -339,8 +339,13 @@ unsafe impl<'a, I, T: 'a> TrustedLen for Cloned<I>
339339
#[must_use = "iterators are lazy and do nothing unless consumed"]
340340
#[stable(feature = "rust1", since = "1.0.0")]
341341
pub struct Cycle<I> {
342-
pub(super) orig: I,
343-
pub(super) iter: I,
342+
orig: I,
343+
iter: I,
344+
}
345+
impl<I: Clone> Cycle<I> {
346+
pub(super) fn new(iter: I) -> Cycle<I> {
347+
Cycle { orig: iter.clone(), iter }
348+
}
344349
}
345350

346351
#[stable(feature = "rust1", since = "1.0.0")]
@@ -380,9 +385,15 @@ impl<I> FusedIterator for Cycle<I> where I: Clone + Iterator {}
380385
#[stable(feature = "iterator_step_by", since = "1.28.0")]
381386
#[derive(Clone, Debug)]
382387
pub struct StepBy<I> {
383-
pub(super) iter: I,
384-
pub(super) step: usize,
385-
pub(super) first_take: bool,
388+
iter: I,
389+
step: usize,
390+
first_take: bool,
391+
}
392+
impl<I> StepBy<I> {
393+
pub(super) fn new(iter: I, step: usize) -> StepBy<I> {
394+
assert!(step != 0);
395+
StepBy { iter, step: step - 1, first_take: true }
396+
}
386397
}
387398

388399
#[stable(feature = "iterator_step_by", since = "1.28.0")]
@@ -867,8 +878,13 @@ impl<B, I: FusedIterator, F> FusedIterator for FilterMap<I, F>
867878
#[must_use = "iterators are lazy and do nothing unless consumed"]
868879
#[stable(feature = "rust1", since = "1.0.0")]
869880
pub struct Enumerate<I> {
870-
pub(super) iter: I,
871-
pub(super) count: usize,
881+
iter: I,
882+
count: usize,
883+
}
884+
impl<I> Enumerate<I> {
885+
pub(super) fn new(iter: I) -> Enumerate<I> {
886+
Enumerate { iter, count: 0 }
887+
}
872888
}
873889

874890
#[stable(feature = "rust1", since = "1.0.0")]
@@ -1028,9 +1044,14 @@ unsafe impl<I> TrustedLen for Enumerate<I>
10281044
#[must_use = "iterators are lazy and do nothing unless consumed"]
10291045
#[stable(feature = "rust1", since = "1.0.0")]
10301046
pub struct Peekable<I: Iterator> {
1031-
pub(super) iter: I,
1047+
iter: I,
10321048
/// Remember a peeked value, even if it was None.
1033-
pub(super) peeked: Option<Option<I::Item>>,
1049+
peeked: Option<Option<I::Item>>,
1050+
}
1051+
impl<I: Iterator> Peekable<I> {
1052+
pub(super) fn new(iter: I) -> Peekable<I> {
1053+
Peekable { iter, peeked: None }
1054+
}
10341055
}
10351056

10361057
// Peekable must remember if a None has been seen in the `.peek()` method.
@@ -1180,9 +1201,14 @@ impl<I: Iterator> Peekable<I> {
11801201
#[stable(feature = "rust1", since = "1.0.0")]
11811202
#[derive(Clone)]
11821203
pub struct SkipWhile<I, P> {
1183-
pub(super) iter: I,
1184-
pub(super) flag: bool,
1185-
pub(super) predicate: P,
1204+
iter: I,
1205+
flag: bool,
1206+
predicate: P,
1207+
}
1208+
impl<I, P> SkipWhile<I, P> {
1209+
pub(super) fn new(iter: I, predicate: P) -> SkipWhile<I, P> {
1210+
SkipWhile { iter, flag: false, predicate }
1211+
}
11861212
}
11871213

11881214
#[stable(feature = "core_impl_debug", since = "1.9.0")]
@@ -1263,9 +1289,14 @@ impl<I, P> FusedIterator for SkipWhile<I, P>
12631289
#[stable(feature = "rust1", since = "1.0.0")]
12641290
#[derive(Clone)]
12651291
pub struct TakeWhile<I, P> {
1266-
pub(super) iter: I,
1267-
pub(super) flag: bool,
1268-
pub(super) predicate: P,
1292+
iter: I,
1293+
flag: bool,
1294+
predicate: P,
1295+
}
1296+
impl<I, P> TakeWhile<I, P> {
1297+
pub(super) fn new(iter: I, predicate: P) -> TakeWhile<I, P> {
1298+
TakeWhile { iter, flag: false, predicate }
1299+
}
12691300
}
12701301

12711302
#[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
16321663
#[must_use = "iterators are lazy and do nothing unless consumed"]
16331664
#[stable(feature = "rust1", since = "1.0.0")]
16341665
pub struct Fuse<I> {
1635-
pub(super) iter: I,
1636-
pub(super) done: bool
1666+
iter: I,
1667+
done: bool
1668+
}
1669+
impl<I> Fuse<I> {
1670+
pub(super) fn new(iter: I) -> Fuse<I> {
1671+
Fuse { iter, done: false }
1672+
}
16371673
}
16381674

16391675
#[stable(feature = "fused", since = "1.26.0")]

src/libcore/iter/traits/iterator.rs

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -366,8 +366,7 @@ pub trait Iterator {
366366
#[inline]
367367
#[stable(feature = "iterator_step_by", since = "1.28.0")]
368368
fn step_by(self, step: usize) -> StepBy<Self> where Self: Sized {
369-
assert!(step != 0);
370-
StepBy{iter: self, step: step - 1, first_take: true}
369+
StepBy::new(self, step)
371370
}
372371

373372
/// Takes two iterators and creates a new iterator over both in sequence.
@@ -771,7 +770,7 @@ pub trait Iterator {
771770
#[inline]
772771
#[stable(feature = "rust1", since = "1.0.0")]
773772
fn enumerate(self) -> Enumerate<Self> where Self: Sized {
774-
Enumerate { iter: self, count: 0 }
773+
Enumerate::new(self)
775774
}
776775

777776
/// Creates an iterator which can use `peek` to look at the next element of
@@ -817,7 +816,7 @@ pub trait Iterator {
817816
#[inline]
818817
#[stable(feature = "rust1", since = "1.0.0")]
819818
fn peekable(self) -> Peekable<Self> where Self: Sized {
820-
Peekable{iter: self, peeked: None}
819+
Peekable::new(self)
821820
}
822821

823822
/// Creates an iterator that [`skip`]s elements based on a predicate.
@@ -880,7 +879,7 @@ pub trait Iterator {
880879
fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P> where
881880
Self: Sized, P: FnMut(&Self::Item) -> bool,
882881
{
883-
SkipWhile { iter: self, flag: false, predicate }
882+
SkipWhile::new(self, predicate)
884883
}
885884

886885
/// Creates an iterator that yields elements based on a predicate.
@@ -960,7 +959,7 @@ pub trait Iterator {
960959
fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P> where
961960
Self: Sized, P: FnMut(&Self::Item) -> bool,
962961
{
963-
TakeWhile { iter: self, flag: false, predicate }
962+
TakeWhile::new(self, predicate)
964963
}
965964

966965
/// Creates an iterator that skips the first `n` elements.
@@ -1225,7 +1224,7 @@ pub trait Iterator {
12251224
#[inline]
12261225
#[stable(feature = "rust1", since = "1.0.0")]
12271226
fn fuse(self) -> Fuse<Self> where Self: Sized {
1228-
Fuse{iter: self, done: false}
1227+
Fuse::new(self)
12291228
}
12301229

12311230
/// Do something with each element of an iterator, passing the value on.
@@ -2310,7 +2309,7 @@ pub trait Iterator {
23102309
#[stable(feature = "rust1", since = "1.0.0")]
23112310
#[inline]
23122311
fn cycle(self) -> Cycle<Self> where Self: Sized + Clone {
2313-
Cycle{orig: self.clone(), iter: self}
2312+
Cycle::new(self)
23142313
}
23152314

23162315
/// Sums the elements of an iterator.

0 commit comments

Comments
 (0)