Trait core::iter::IteratorUnstable
[-]
[+]
[src]
pub trait Iterator<A> {
fn next(&mut self) -> Option<A>;
fn size_hint(&self) -> (uint, Option<uint>) { ... }
}An interface for dealing with "external iterators". These types of iterators can be resumed at any time as all state is stored internally as opposed to being located on the call stack.
The Iterator protocol states that an iterator yields a (potentially-empty,
potentially-infinite) sequence of values, and returns None to signal that
it's finished. The Iterator protocol does not define behavior after None
is returned. A concrete Iterator implementation may choose to behave however
it wishes, either by returning None infinitely, or by doing something
else.
Required Methods
fn next(&mut self) -> Option<A>
Advance the iterator and return the next value. Return None when the end is reached.
Provided Methods
fn size_hint(&self) -> (uint, Option<uint>)
Returns a lower and upper bound on the remaining length of the iterator.
An upper bound of None means either there is no known upper bound, or the upper bound
does not fit within a uint.
Implementors
impl<Idx: Clone + Step> Iterator<Idx> for Range<Idx>impl<Idx: Clone + Step> Iterator<Idx> for RangeFrom<Idx>impl Iterator<char> for EscapeUnicodeimpl Iterator<char> for EscapeDefaultimpl<A, T: DoubleEndedIterator<A>> Iterator<A> for Rev<T>impl<'a, A, T: Iterator<A> + 'a> Iterator<A> for ByRef<'a, T>impl<A: Clone, D: Deref<A>, I: Iterator<D>> Iterator<A> for Cloned<I>impl<A, T: Clone + Iterator<A>> Iterator<A> for Cycle<T>impl<A, T: Iterator<A>, U: Iterator<A>> Iterator<A> for Chain<T, U>impl<A, B, T: Iterator<A>, U: Iterator<B>> Iterator<(A, B)> for Zip<T, U>impl<A, B, I, F> Iterator<B> for Map<A, B, I, F> where I: Iterator<A>, F: FnMut(A) -> Bimpl<A, I, P> Iterator<A> for Filter<A, I, P> where I: Iterator<A>, P: FnMut(&A) -> boolimpl<A, B, I, F> Iterator<B> for FilterMap<A, B, I, F> where I: Iterator<A>, F: FnMut(A) -> Option<B>impl<A, T: Iterator<A>> Iterator<(uint, A)> for Enumerate<T>impl<A, T: Iterator<A>> Iterator<A> for Peekable<A, T>impl<A, I, P> Iterator<A> for SkipWhile<A, I, P> where I: Iterator<A>, P: FnMut(&A) -> boolimpl<A, I, P> Iterator<A> for TakeWhile<A, I, P> where I: Iterator<A>, P: FnMut(&A) -> boolimpl<A, T: Iterator<A>> Iterator<A> for Skip<T>impl<A, T: Iterator<A>> Iterator<A> for Take<T>impl<A, B, I, St, F> Iterator<B> for Scan<A, B, I, St, F> where I: Iterator<A>, F: FnMut(&mut St, A) -> Option<B>impl<A, B, I, U, F> Iterator<B> for FlatMap<A, B, I, U, F> where I: Iterator<A>, U: Iterator<B>, F: FnMut(A) -> Uimpl<A, T: Iterator<A>> Iterator<A> for Fuse<T>impl<A, I, F> Iterator<A> for Inspect<A, I, F> where I: Iterator<A>, F: FnMut(&A)impl<A, St, F> Iterator<A> for Unfold<A, St, F> where F: FnMut(&mut St) -> Option<A>impl<A: Add<A, A> + Clone> Iterator<A> for Counter<A>impl<A: Int + ToPrimitive> Iterator<A> for Range<A>impl<A: Int + ToPrimitive> Iterator<A> for RangeInclusive<A>impl<A: Int> Iterator<A> for RangeStep<A>impl<A: Int> Iterator<A> for RangeStepInclusive<A>impl<A: Clone> Iterator<A> for Repeat<A>impl<'a, A> Iterator<&'a A> for Iter<'a, A>impl<'a, A> Iterator<&'a mut A> for IterMut<'a, A>impl<A> Iterator<A> for IntoIter<A>impl<'a, T> Iterator<&'a T> for Iter<'a, T>impl<'a, T> Iterator<&'a mut T> for IterMut<'a, T>impl<T> Iterator<T> for IntoIter<T>impl<'a, T> Iterator<&'a T> for Iter<'a, T>impl<'a, T> Iterator<&'a mut T> for IterMut<'a, T>impl<'a, T, P> Iterator<&'a [T]> for Split<'a, T, P> where P: FnMut(&T) -> boolimpl<'a, T, P> Iterator<&'a mut [T]> for SplitMut<'a, T, P> where P: FnMut(&T) -> boolimpl<'a, T, P> Iterator<&'a [T]> for SplitN<'a, T, P> where P: FnMut(&T) -> boolimpl<'a, T, P> Iterator<&'a [T]> for RSplitN<'a, T, P> where P: FnMut(&T) -> boolimpl<'a, T, P> Iterator<&'a mut [T]> for SplitNMut<'a, T, P> where P: FnMut(&T) -> boolimpl<'a, T, P> Iterator<&'a mut [T]> for RSplitNMut<'a, T, P> where P: FnMut(&T) -> boolimpl<'a, T> Iterator<&'a [T]> for Windows<'a, T>impl<'a, T> Iterator<&'a [T]> for Chunks<'a, T>impl<'a, T> Iterator<&'a mut [T]> for ChunksMut<'a, T>impl<'a> Iterator<char> for Chars<'a>impl<'a> Iterator<(uint, char)> for CharIndices<'a>impl<'a> Iterator<u8> for Bytes<'a>impl<'a, Sep: CharEq> Iterator<&'a str> for CharSplits<'a, Sep>impl<'a, Sep: CharEq> Iterator<&'a str> for CharSplitsN<'a, Sep>impl<'a> Iterator<(uint, uint)> for MatchIndices<'a>impl<'a> Iterator<&'a str> for SplitStr<'a>impl<'a, P: CharEq> Iterator<&'a str> for Split<'a, P>impl<'a, P: CharEq> Iterator<&'a str> for SplitTerminator<'a, P>impl<'a, P: CharEq> Iterator<&'a str> for SplitN<'a, P>impl<'a, P: CharEq> Iterator<&'a str> for RSplitN<'a, P>impl<'a> Iterator<&'a str> for Lines<'a>impl<'a> Iterator<&'a str> for LinesAny<'a>