core: merge DoubleEndedIteratorExt into IteratorExt

This commit is contained in:
Jorge Aparicio 2015-01-03 00:28:23 -05:00
parent 6c0ad5b564
commit de1446680c
11 changed files with 29 additions and 37 deletions

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -15,7 +15,7 @@
#![allow(unsigned_negation)]
use fmt;
use iter::DoubleEndedIteratorExt;
use iter::IteratorExt;
use num::{Int, cast};
use slice::SliceExt;
use str;

View File

@ -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<Self> {
Rev{iter: self}
}
}
#[unstable = "trait is unstable"]
@ -772,31 +790,6 @@ pub trait DoubleEndedIterator: Iterator {
fn next_back(&mut self) -> Option< <Self as Iterator>::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<Self> {
Rev{iter: self}
}
}
#[unstable = "trait is unstable"]
impl<I> DoubleEndedIteratorExt for I where I: DoubleEndedIterator {}
/// A double-ended iterator yielding mutable references
#[experimental = "not widely used"]
pub trait MutableDoubleEndedIterator {

View File

@ -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};

View File

@ -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;

View File

@ -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};

View File

@ -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};

View File

@ -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};