From de1446680cab4102cef9d0e133f1b835574926eb Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Sat, 3 Jan 2015 00:28:23 -0500 Subject: [PATCH] core: merge DoubleEndedIteratorExt into IteratorExt --- src/libcollections/lib.rs | 2 +- src/libcollections/slice.rs | 2 +- src/libcollections/str.rs | 2 +- src/libcore/fmt/float.rs | 2 +- src/libcore/fmt/num.rs | 2 +- src/libcore/iter.rs | 43 ++++++++++++++++--------------------- src/libcore/prelude.rs | 2 +- src/libcore/str/mod.rs | 2 +- src/libstd/path/posix.rs | 4 ++-- src/libstd/path/windows.rs | 4 ++-- src/libstd/prelude/v1.rs | 1 - 11 files changed, 29 insertions(+), 37 deletions(-) diff --git a/src/libcollections/lib.rs b/src/libcollections/lib.rs index fac9ab8107a..fb9530882db 100644 --- a/src/libcollections/lib.rs +++ b/src/libcollections/lib.rs @@ -110,7 +110,7 @@ mod prelude { pub use core::iter::range; pub use core::iter::{FromIterator, Extend, IteratorExt}; pub use core::iter::{Iterator, DoubleEndedIterator, RandomAccessIterator}; - pub use core::iter::{IteratorCloneExt, CloneIteratorExt, DoubleEndedIteratorExt}; + pub use core::iter::{IteratorCloneExt, CloneIteratorExt}; pub use core::iter::{IteratorOrdExt, MutableDoubleEndedIterator, ExactSizeIterator}; pub use core::kinds::{Copy, Send, Sized, Sync}; pub use core::mem::drop; diff --git a/src/libcollections/slice.rs b/src/libcollections/slice.rs index 92bdf0be378..5db4e8580d0 100644 --- a/src/libcollections/slice.rs +++ b/src/libcollections/slice.rs @@ -1449,7 +1449,7 @@ pub mod raw { mod tests { use std::boxed::Box; use prelude::{Some, None, range, Vec, ToString, Clone, Greater, Less, Equal}; - use prelude::{SliceExt, Iterator, IteratorExt, DoubleEndedIteratorExt}; + use prelude::{SliceExt, Iterator, IteratorExt}; use prelude::AsSlice; use prelude::{RandomAccessIterator, Ord, SliceConcatExt}; use core::cell::Cell; diff --git a/src/libcollections/str.rs b/src/libcollections/str.rs index 7f35e5fd1ca..6c51480931b 100644 --- a/src/libcollections/str.rs +++ b/src/libcollections/str.rs @@ -3278,7 +3278,7 @@ mod tests { #[cfg(test)] mod bench { use super::*; - use prelude::{SliceExt, IteratorExt, DoubleEndedIteratorExt, SliceConcatExt}; + use prelude::{SliceExt, IteratorExt, SliceConcatExt}; use test::Bencher; use test::black_box; diff --git a/src/libcore/fmt/float.rs b/src/libcore/fmt/float.rs index a39168ec1ec..27023fab858 100644 --- a/src/libcore/fmt/float.rs +++ b/src/libcore/fmt/float.rs @@ -17,7 +17,7 @@ pub use self::SignFormat::*; use char; use char::Char; use fmt; -use iter::{range, DoubleEndedIteratorExt}; +use iter::{IteratorExt, range}; use num::{cast, Float, ToPrimitive}; use num::FpCategory as Fp; use ops::FnOnce; diff --git a/src/libcore/fmt/num.rs b/src/libcore/fmt/num.rs index 4f0cecbb243..e680230265a 100644 --- a/src/libcore/fmt/num.rs +++ b/src/libcore/fmt/num.rs @@ -15,7 +15,7 @@ #![allow(unsigned_negation)] use fmt; -use iter::DoubleEndedIteratorExt; +use iter::IteratorExt; use num::{Int, cast}; use slice::SliceExt; use str; diff --git a/src/libcore/iter.rs b/src/libcore/iter.rs index c4b3531d539..b19cbb54d29 100644 --- a/src/libcore/iter.rs +++ b/src/libcore/iter.rs @@ -719,6 +719,24 @@ pub trait IteratorExt: Iterator + Sized { } }).map(|(x, _)| x) } + + /// Change the direction of the iterator + /// + /// The flipped iterator swaps the ends on an iterator that can already + /// be iterated from the front and from the back. + /// + /// + /// If the iterator also implements RandomAccessIterator, the flipped + /// iterator is also random access, with the indices starting at the back + /// of the original iterator. + /// + /// Note: Random access with flipped indices still only applies to the first + /// `uint::MAX` elements of the original iterator. + #[inline] + #[stable] + fn rev(self) -> Rev { + Rev{iter: self} + } } #[unstable = "trait is unstable"] @@ -772,31 +790,6 @@ pub trait DoubleEndedIterator: Iterator { fn next_back(&mut self) -> Option< ::Item>; } -/// Extension methods for double-ended iterators. -#[unstable = "new extension trait convention"] -pub trait DoubleEndedIteratorExt: DoubleEndedIterator + Sized { - /// Change the direction of the iterator - /// - /// The flipped iterator swaps the ends on an iterator that can already - /// be iterated from the front and from the back. - /// - /// - /// If the iterator also implements RandomAccessIterator, the flipped - /// iterator is also random access, with the indices starting at the back - /// of the original iterator. - /// - /// Note: Random access with flipped indices still only applies to the first - /// `uint::MAX` elements of the original iterator. - #[inline] - #[stable] - fn rev(self) -> Rev { - Rev{iter: self} - } -} - -#[unstable = "trait is unstable"] -impl DoubleEndedIteratorExt for I where I: DoubleEndedIterator {} - /// A double-ended iterator yielding mutable references #[experimental = "not widely used"] pub trait MutableDoubleEndedIterator { diff --git a/src/libcore/prelude.rs b/src/libcore/prelude.rs index 8cb63138009..b661fb7ccba 100644 --- a/src/libcore/prelude.rs +++ b/src/libcore/prelude.rs @@ -42,7 +42,7 @@ pub use char::Char; pub use clone::Clone; pub use cmp::{PartialEq, PartialOrd, Eq, Ord}; pub use iter::{Extend, IteratorExt}; -pub use iter::{Iterator, DoubleEndedIterator, DoubleEndedIteratorExt}; +pub use iter::{Iterator, DoubleEndedIterator}; pub use iter::{IteratorCloneExt, CloneIteratorExt}; pub use iter::{IteratorOrdExt, ExactSizeIterator, IteratorPairExt}; pub use option::Option::{mod, Some, None}; diff --git a/src/libcore/str/mod.rs b/src/libcore/str/mod.rs index 8df072c9d46..7e99e423608 100644 --- a/src/libcore/str/mod.rs +++ b/src/libcore/str/mod.rs @@ -21,7 +21,7 @@ use self::Searcher::{Naive, TwoWay, TwoWayLong}; use cmp::{mod, Eq}; use default::Default; use iter::range; -use iter::{DoubleEndedIteratorExt, ExactSizeIterator}; +use iter::ExactSizeIterator; use iter::{Map, Iterator, IteratorExt, DoubleEndedIterator}; use kinds::Sized; use mem; diff --git a/src/libstd/path/posix.rs b/src/libstd/path/posix.rs index 6075010f3b5..39b96ef6aee 100644 --- a/src/libstd/path/posix.rs +++ b/src/libstd/path/posix.rs @@ -15,7 +15,7 @@ use clone::Clone; use cmp::{PartialEq, Eq, PartialOrd, Ord, Ordering}; use hash; use io::Writer; -use iter::{DoubleEndedIteratorExt, AdditiveIterator, Extend}; +use iter::{AdditiveIterator, Extend}; use iter::{Iterator, IteratorExt, Map}; use option::Option; use option::Option::{None, Some}; @@ -449,7 +449,7 @@ mod tests { use super::*; use clone::Clone; - use iter::{IteratorExt, DoubleEndedIteratorExt}; + use iter::IteratorExt; use option::Option::{mod, Some, None}; use path::GenericPath; use slice::{AsSlice, SliceExt}; diff --git a/src/libstd/path/windows.rs b/src/libstd/path/windows.rs index 55086ad3a23..f6fb149e82c 100644 --- a/src/libstd/path/windows.rs +++ b/src/libstd/path/windows.rs @@ -20,7 +20,7 @@ use clone::Clone; use cmp::{PartialEq, Eq, PartialOrd, Ord, Ordering}; use hash; use io::Writer; -use iter::{AdditiveIterator, DoubleEndedIteratorExt, Extend}; +use iter::{AdditiveIterator, Extend}; use iter::{Iterator, IteratorExt, Map, repeat}; use mem; use option::Option; @@ -1124,7 +1124,7 @@ mod tests { use super::*; use clone::Clone; - use iter::{IteratorExt, DoubleEndedIteratorExt}; + use iter::IteratorExt; use option::Option::{mod, Some, None}; use path::GenericPath; use slice::{AsSlice, SliceExt}; diff --git a/src/libstd/prelude/v1.rs b/src/libstd/prelude/v1.rs index cb5dfafb4a1..dea2749c182 100644 --- a/src/libstd/prelude/v1.rs +++ b/src/libstd/prelude/v1.rs @@ -27,7 +27,6 @@ #[stable] #[doc(no_inline)] pub use cmp::{PartialEq, PartialOrd, Eq, Ord}; #[stable] #[doc(no_inline)] pub use iter::CloneIteratorExt; #[stable] #[doc(no_inline)] pub use iter::DoubleEndedIterator; -#[stable] #[doc(no_inline)] pub use iter::DoubleEndedIteratorExt; #[stable] #[doc(no_inline)] pub use iter::ExactSizeIterator; #[stable] #[doc(no_inline)] pub use iter::{Iterator, IteratorExt, Extend}; #[stable] #[doc(no_inline)] pub use iter::{IteratorCloneExt, IteratorOrdExt};