pub trait FusedIterator: Iterator { }
An iterator that always continues to yield None
when exhausted.
Calling next on a fused iterator that has returned None
once is guaranteed to return None
again. This trait is should be implemented by all iterators that behave this way because it allows for some significant optimizations.
Note: In general, you should not use FusedIterator
in generic bounds if you need a fused iterator. Instead, you should just call Iterator::fuse()
on the iterator. If the iterator is already fused, the additional Fuse
wrapper will be a no-op with no performance penalty.
impl<'a, T> FusedIterator for std::collections::binary_heap::Iter<'a, T>
impl<T> FusedIterator for std::collections::binary_heap::IntoIter<T>
impl<'a, T> FusedIterator for std::collections::binary_heap::Drain<'a, T> where T: 'a
impl<'a, K, V> FusedIterator for std::collections::btree_map::Iter<'a, K, V>
impl<'a, K, V> FusedIterator for std::collections::btree_map::IterMut<'a, K, V>
impl<K, V> FusedIterator for std::collections::btree_map::IntoIter<K, V>
impl<'a, K, V> FusedIterator for std::collections::btree_map::Keys<'a, K, V>
impl<'a, K, V> FusedIterator for std::collections::btree_map::Values<'a, K, V>
impl<'a, K, V> FusedIterator for std::collections::btree_map::ValuesMut<'a, K, V>
impl<'a, K, V> FusedIterator for std::collections::btree_map::Range<'a, K, V>
impl<'a, K, V> FusedIterator for RangeMut<'a, K, V>
impl<'a, T> FusedIterator for std::collections::btree_set::Iter<'a, T>
impl<T> FusedIterator for std::collections::btree_set::IntoIter<T>
impl<'a, T> FusedIterator for std::collections::btree_set::Range<'a, T>
impl<'a, T> FusedIterator for std::collections::btree_set::Difference<'a, T> where T: Ord
impl<'a, T> FusedIterator for std::collections::btree_set::SymmetricDifference<'a, T> where T: Ord
impl<'a, T> FusedIterator for std::collections::btree_set::Intersection<'a, T> where T: Ord
impl<'a, T> FusedIterator for std::collections::btree_set::Union<'a, T> where T: Ord
impl<E> FusedIterator for collections::enum_set::Iter<E> where E: CLike
impl<'a, T> FusedIterator for std::collections::linked_list::Iter<'a, T>
impl<'a, T> FusedIterator for std::collections::linked_list::IterMut<'a, T>
impl<T> FusedIterator for std::collections::linked_list::IntoIter<T>
impl<'a> FusedIterator for EncodeUtf16<'a>
impl<'a> FusedIterator for std::string::Drain<'a>
impl<T> FusedIterator for std::vec::IntoIter<T>
impl<'a, T> FusedIterator for std::vec::Drain<'a, T>
impl<'a, T> FusedIterator for std::collections::vec_deque::Iter<'a, T>
impl<'a, T> FusedIterator for std::collections::vec_deque::IterMut<'a, T>
impl<T> FusedIterator for std::collections::vec_deque::IntoIter<T>
impl<'a, T> FusedIterator for std::collections::vec_deque::Drain<'a, T> where T: 'a
impl<I> FusedIterator for Box<I> where I: FusedIterator + ?Sized
impl FusedIterator for EscapeUnicode
impl FusedIterator for std::char::EscapeDefault
impl FusedIterator for EscapeDebug
impl<I> FusedIterator for DecodeUtf8<I> where I: FusedIterator<Item=u8>
impl<A> FusedIterator for std::iter::StepBy<A, RangeFrom<A>> where A: Clone,
        &'a A: Add<&'a A>,
        &'a A::Output == A
impl<A> FusedIterator for std::iter::StepBy<A, Range<A>> where A: Clone + Step
impl<A> FusedIterator for std::iter::StepBy<A, RangeInclusive<A>> where A: Clone + Step
impl<A> FusedIterator for std::ops::Range<A> where A: Step,
        &'a A: Add<&'a A>,
        &'a A::Output == A
impl<A> FusedIterator for RangeFrom<A> where A: Step,
        &'a A: Add<&'a A>,
        &'a A::Output == A
impl<A> FusedIterator for RangeInclusive<A> where A: Step,
        &'a A: Add<&'a A>,
        &'a A::Output == A
impl<A> FusedIterator for Repeat<A> where A: Clone
impl<T> FusedIterator for Empty<T>
impl<T> FusedIterator for Once<T>
impl<'a, I> FusedIterator for &'a mut I where I: FusedIterator + ?Sized
impl<I> FusedIterator for Rev<I> where I: FusedIterator + DoubleEndedIterator
impl<'a, I, T> FusedIterator for Cloned<I> where I: FusedIterator<Item=&'a T>,
        T: 'a + Clone
impl<I> FusedIterator for Cycle<I> where I: Clone + Iterator
impl<A, B> FusedIterator for Chain<A, B> where A: FusedIterator,
        B: FusedIterator<Item=A::Item>
impl<A, B> FusedIterator for Zip<A, B> where A: FusedIterator, B: FusedIterator
impl<B, I, F> FusedIterator for Map<I, F> where F: FnMut(I::Item) -> B,
        I: FusedIterator
impl<I, P> FusedIterator for Filter<I, P> where I: FusedIterator,
        P: FnMut(&I::Item) -> bool
impl<B, I, F> FusedIterator for FilterMap<I, F> where F: FnMut(I::Item) -> Option<B>,
        I: FusedIterator
impl<I> FusedIterator for Enumerate<I> where I: FusedIterator
impl<I> FusedIterator for Peekable<I> where I: FusedIterator
impl<I, P> FusedIterator for SkipWhile<I, P> where I: FusedIterator,
        P: FnMut(&I::Item) -> bool
impl<I, P> FusedIterator for TakeWhile<I, P> where I: FusedIterator,
        P: FnMut(&I::Item) -> bool
impl<I> FusedIterator for Skip<I> where I: FusedIterator
impl<I> FusedIterator for Take<I> where I: FusedIterator
impl<B, I, St, F> FusedIterator for Scan<I, St, F> where F: FnMut(&mut St, I::Item) -> Option<B>,
        I: FusedIterator
impl<I, U, F> FusedIterator for FlatMap<I, U, F> where F: FnMut(I::Item) -> U,
        I: FusedIterator,
        U: IntoIterator
impl<I> FusedIterator for Fuse<I> where I: Iterator
impl<I, F> FusedIterator for Inspect<I, F> where F: FnMut(&I::Item) -> (),
        I: FusedIterator
impl<'a, A> FusedIterator for std::option::Iter<'a, A>
impl<'a, A> FusedIterator for std::option::IterMut<'a, A>
impl<A> FusedIterator for std::option::IntoIter<A>
impl<'a, T> FusedIterator for std::result::Iter<'a, T>
impl<'a, T> FusedIterator for std::result::IterMut<'a, T>
impl<T> FusedIterator for std::result::IntoIter<T>
impl<'a, T> FusedIterator for std::slice::Iter<'a, T>
impl<'a, T> FusedIterator for std::slice::IterMut<'a, T>
impl<'a, T, P> FusedIterator for std::slice::Split<'a, T, P> where P: FnMut(&T) -> bool
impl<'a, T, P> FusedIterator for SplitMut<'a, T, P> where P: FnMut(&T) -> bool
impl<'a, T> FusedIterator for Windows<'a, T>
impl<'a, T> FusedIterator for Chunks<'a, T>
impl<'a, T> FusedIterator for ChunksMut<'a, T>
impl<'a> FusedIterator for Chars<'a>
impl<'a> FusedIterator for CharIndices<'a>
impl<'a> FusedIterator for Bytes<'a>
impl<'a> FusedIterator for Lines<'a>
impl<'a> FusedIterator for LinesAny<'a>
impl<'a, T, P> FusedIterator for std::slice::SplitN<'a, T, P> where P: FnMut(&T) -> bool
impl<'a, T, P> FusedIterator for std::slice::RSplitN<'a, T, P> where P: FnMut(&T) -> bool
impl<'a, T, P> FusedIterator for SplitNMut<'a, T, P> where P: FnMut(&T) -> bool
impl<'a, T, P> FusedIterator for RSplitNMut<'a, T, P> where P: FnMut(&T) -> bool
impl<'a, P> FusedIterator for std::str::Split<'a, P> where P: Pattern<'a>
impl<'a, P> FusedIterator for RSplit<'a, P> where P: Pattern<'a>,
        P::Searcher: ReverseSearcher<'a>
impl<'a, P> FusedIterator for SplitTerminator<'a, P> where P: Pattern<'a>
impl<'a, P> FusedIterator for RSplitTerminator<'a, P> where P: Pattern<'a>,
        P::Searcher: ReverseSearcher<'a>
impl<'a, P> FusedIterator for std::str::SplitN<'a, P> where P: Pattern<'a>
impl<'a, P> FusedIterator for std::str::RSplitN<'a, P> where P: Pattern<'a>,
        P::Searcher: ReverseSearcher<'a>
impl<'a, P> FusedIterator for MatchIndices<'a, P> where P: Pattern<'a>
impl<'a, P> FusedIterator for RMatchIndices<'a, P> where P: Pattern<'a>,
        P::Searcher: ReverseSearcher<'a>
impl<'a, P> FusedIterator for Matches<'a, P> where P: Pattern<'a>
impl<'a, P> FusedIterator for RMatches<'a, P> where P: Pattern<'a>,
        P::Searcher: ReverseSearcher<'a>
impl<I> FusedIterator for Utf16Encoder<I> where I: FusedIterator<Item=char>
impl<'a> FusedIterator for SplitWhitespace<'a>
impl FusedIterator for ToLowercase
impl FusedIterator for ToUppercase
impl FusedIterator for std::ascii::EscapeDefault
impl<'a, K, V> FusedIterator for std::collections::hash_map::Iter<'a, K, V>
impl<'a, K, V> FusedIterator for std::collections::hash_map::IterMut<'a, K, V>
impl<K, V> FusedIterator for std::collections::hash_map::IntoIter<K, V>
impl<'a, K, V> FusedIterator for std::collections::hash_map::Keys<'a, K, V>
impl<'a, K, V> FusedIterator for std::collections::hash_map::Values<'a, K, V>
impl<'a, K, V> FusedIterator for std::collections::hash_map::ValuesMut<'a, K, V>
impl<'a, K, V> FusedIterator for std::collections::hash_map::Drain<'a, K, V>
impl<'a, K> FusedIterator for std::collections::hash_set::Iter<'a, K>
impl<K> FusedIterator for std::collections::hash_set::IntoIter<K>
impl<'a, K> FusedIterator for std::collections::hash_set::Drain<'a, K>
impl<'a, T, S> FusedIterator for std::collections::hash_set::Intersection<'a, T, S> where T: Eq + Hash,
        S: BuildHasher
impl<'a, T, S> FusedIterator for std::collections::hash_set::Difference<'a, T, S> where T: Eq + Hash,
        S: BuildHasher
impl<'a, T, S> FusedIterator for std::collections::hash_set::SymmetricDifference<'a, T, S> where T: Eq + Hash,
        S: BuildHasher
impl<'a, T, S> FusedIterator for std::collections::hash_set::Union<'a, T, S> where T: Eq + Hash,
        S: BuildHasher
impl<'a> FusedIterator for std::path::Iter<'a>
impl<'a> FusedIterator for Components<'a>
© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/std/iter/trait.FusedIterator.html