pub struct Enumerate<I> { /* private fields */ }
An iterator that yields the current count and the element during iteration.
This struct is created by the enumerate method on Iterator. See its documentation for more.
impl<I> Enumerate<I>
pub fn next_index(&self) -> usize
next_index #130711)
Retrieve the current position of the iterator.
If the iterator has not advanced, the position returned will be 0.
The position may also exceed the bounds of the iterator to allow for calculating the displacement of the iterator from following calls to Iterator::next.
#![feature(next_index)] let arr = ['a', 'b']; let mut iter = arr.iter().enumerate(); assert_eq!(iter.next_index(), 0); assert_eq!(iter.next(), Some((0, &'a'))); assert_eq!(iter.next_index(), 1); assert_eq!(iter.next_index(), 1); assert_eq!(iter.next(), Some((1, &'b'))); assert_eq!(iter.next_index(), 2); assert_eq!(iter.next(), None); assert_eq!(iter.next_index(), 2);
impl<I> Clone for Enumerate<I>where
I: Clone,fn clone(&self) -> Enumerate<I> ⓘ
fn clone_from(&mut self, source: &Self)
source. Read more
impl<I> Debug for Enumerate<I>where
I: Debug,fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>
impl<I> Default for Enumerate<I>where
I: Default,fn default() -> Enumerate<I> ⓘ
Creates an Enumerate iterator from the default value of I
let iter: Enumerate<slice::Iter<'_, u8>> = Default::default(); assert_eq!(iter.len(), 0);
impl<I> DoubleEndedIterator for Enumerate<I>where
I: ExactSizeIterator + DoubleEndedIterator,fn next_back(&mut self) -> Option<(usize, <I as Iterator>::Item)>
fn nth_back(&mut self, n: usize) -> Option<(usize, <I as Iterator>::Item)>
nth element from the end of the iterator. Read more
fn try_rfold<Acc, Fold, R>(&mut self, init: Acc, fold: Fold) -> Rwhere
Enumerate<I>: Sized,
Fold: FnMut(Acc, <Enumerate<I> as Iterator>::Item) -> R,
R: Try<Output = Acc>,Iterator::try_fold(): it takes elements starting from the back of the iterator. Read more
fn rfold<Acc, Fold>(self, init: Acc, fold: Fold) -> Accwhere
Fold: FnMut(Acc, <Enumerate<I> as Iterator>::Item) -> Acc,fn advance_back_by(&mut self, n: usize) -> Result<(), NonZero<usize>>
iter_advance_by #77404)
n elements. Read more
fn rfind<P>(&mut self, predicate: P) -> Option<Self::Item>where
Self: Sized,
P: FnMut(&Self::Item) -> bool,impl<I> ExactSizeIterator for Enumerate<I>where
I: ExactSizeIterator,fn len(&self) -> usize
fn is_empty(&self) -> bool
exact_size_is_empty #35428)
true if the iterator is empty. Read more
impl<I> Iterator for Enumerate<I>where
I: Iterator,fn next(&mut self) -> Option<(usize, <I as Iterator>::Item)>
The method does no guarding against overflows, so enumerating more than usize::MAX elements either produces the wrong result or panics. If overflow checks are enabled, a panic is guaranteed.
Might panic if the index of the element overflows a usize.
type Item = (usize, <I as Iterator>::Item)
fn size_hint(&self) -> (usize, Option<usize>)
fn nth(&mut self, n: usize) -> Option<(usize, <I as Iterator>::Item)>
nth element of the iterator. Read more
fn count(self) -> usize
fn try_fold<Acc, Fold, R>(&mut self, init: Acc, fold: Fold) -> Rwhere
Enumerate<I>: Sized,
Fold: FnMut(Acc, <Enumerate<I> as Iterator>::Item) -> R,
R: Try<Output = Acc>,fn fold<Acc, Fold>(self, init: Acc, fold: Fold) -> Accwhere
Fold: FnMut(Acc, <Enumerate<I> as Iterator>::Item) -> Acc,fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>
iter_advance_by #77404)
n elements. Read more
fn next_chunk<const N: usize>(
&mut self,
) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where
Self: Sized,iter_next_chunk #98326)
N values. Read more
fn last(self) -> Option<Self::Item>where
Self: Sized,fn step_by(self, step: usize) -> StepBy<Self> ⓘwhere
Self: Sized,fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter> ⓘwhere
Self: Sized,
U: IntoIterator<Item = Self::Item>,fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter> ⓘwhere
Self: Sized,
U: IntoIterator,fn intersperse(self, separator: Self::Item) -> Intersperse<Self> ⓘwhere
Self: Sized,
Self::Item: Clone,iter_intersperse #79524)
separator between adjacent items of the original iterator. Read more
fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G> ⓘwhere
Self: Sized,
G: FnMut() -> Self::Item,iter_intersperse #79524)
separator between adjacent items of the original iterator. Read more
fn map<B, F>(self, f: F) -> Map<Self, F> ⓘwhere
Self: Sized,
F: FnMut(Self::Item) -> B,fn for_each<F>(self, f: F)where
Self: Sized,
F: FnMut(Self::Item),fn filter<P>(self, predicate: P) -> Filter<Self, P> ⓘwhere
Self: Sized,
P: FnMut(&Self::Item) -> bool,fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F> ⓘwhere
Self: Sized,
F: FnMut(Self::Item) -> Option<B>,fn enumerate(self) -> Enumerate<Self> ⓘwhere
Self: Sized,fn peekable(self) -> Peekable<Self> ⓘwhere
Self: Sized,peek and peek_mut methods to look at the next element of the iterator without consuming it. See their documentation for more information. Read more
fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P> ⓘwhere
Self: Sized,
P: FnMut(&Self::Item) -> bool,fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P> ⓘwhere
Self: Sized,
P: FnMut(&Self::Item) -> bool,fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P> ⓘwhere
Self: Sized,
P: FnMut(Self::Item) -> Option<B>,fn skip(self, n: usize) -> Skip<Self> ⓘwhere
Self: Sized,n elements. Read more
fn take(self, n: usize) -> Take<Self> ⓘwhere
Self: Sized,n elements, or fewer if the underlying iterator ends sooner. Read more
fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F> ⓘwhere
Self: Sized,
F: FnMut(&mut St, Self::Item) -> Option<B>,fold, holds internal state, but unlike fold, produces a new iterator. Read more
fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F> ⓘwhere
Self: Sized,
U: IntoIterator,
F: FnMut(Self::Item) -> U,fn flatten(self) -> Flatten<Self> ⓘwhere
Self: Sized,
Self::Item: IntoIterator,fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N> ⓘwhere
Self: Sized,
F: FnMut(&[Self::Item; N]) -> R,iter_map_windows #87155)
f for each contiguous window of size N over self and returns an iterator over the outputs of f. Like slice::windows(), the windows during mapping overlap as well. Read more
fn fuse(self) -> Fuse<Self> ⓘwhere
Self: Sized,fn inspect<F>(self, f: F) -> Inspect<Self, F> ⓘwhere
Self: Sized,
F: FnMut(&Self::Item),fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,Iterator. Read more
fn collect<B>(self) -> Bwhere
B: FromIterator<Self::Item>,
Self: Sized,fn try_collect<B>(
&mut self,
) -> <<Self::Item as Try>::Residual as Residual<B>>::TryTypewhere
Self: Sized,
Self::Item: Try,
<Self::Item as Try>::Residual: Residual<B>,
B: FromIterator<<Self::Item as Try>::Output>,iterator_try_collect #94047)
fn collect_into<E>(self, collection: &mut E) -> &mut Ewhere
E: Extend<Self::Item>,
Self: Sized,iter_collect_into #94780)
fn partition<B, F>(self, f: F) -> (B, B)where
Self: Sized,
B: Default + Extend<Self::Item>,
F: FnMut(&Self::Item) -> bool,fn partition_in_place<'a, T, P>(self, predicate: P) -> usizewhere
T: 'a,
Self: Sized + DoubleEndedIterator<Item = &'a mut T>,
P: FnMut(&T) -> bool,iter_partition_in_place #62543)
true precede all those that return false. Returns the number of true elements found. Read more
fn is_partitioned<P>(self, predicate: P) -> boolwhere
Self: Sized,
P: FnMut(Self::Item) -> bool,iter_is_partitioned #62544)
true precede all those that return false. Read more
fn try_for_each<F, R>(&mut self, f: F) -> Rwhere
Self: Sized,
F: FnMut(Self::Item) -> R,
R: Try<Output = ()>,fn reduce<F>(self, f: F) -> Option<Self::Item>where
Self: Sized,
F: FnMut(Self::Item, Self::Item) -> Self::Item,fn try_reduce<R>(
&mut self,
f: impl FnMut(Self::Item, Self::Item) -> R,
) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryTypewhere
Self: Sized,
R: Try<Output = Self::Item>,
<R as Try>::Residual: Residual<Option<Self::Item>>,iterator_try_reduce #87053)
fn all<F>(&mut self, f: F) -> boolwhere
Self: Sized,
F: FnMut(Self::Item) -> bool,fn any<F>(&mut self, f: F) -> boolwhere
Self: Sized,
F: FnMut(Self::Item) -> bool,fn find<P>(&mut self, predicate: P) -> Option<Self::Item>where
Self: Sized,
P: FnMut(&Self::Item) -> bool,fn find_map<B, F>(&mut self, f: F) -> Option<B>where
Self: Sized,
F: FnMut(Self::Item) -> Option<B>,fn try_find<R>(
&mut self,
f: impl FnMut(&Self::Item) -> R,
) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryTypewhere
Self: Sized,
R: Try<Output = bool>,
<R as Try>::Residual: Residual<Option<Self::Item>>,try_find #63178)
fn position<P>(&mut self, predicate: P) -> Option<usize>where
Self: Sized,
P: FnMut(Self::Item) -> bool,fn rposition<P>(&mut self, predicate: P) -> Option<usize>where
P: FnMut(Self::Item) -> bool,
Self: Sized + ExactSizeIterator + DoubleEndedIterator,fn max(self) -> Option<Self::Item>where
Self: Sized,
Self::Item: Ord,fn min(self) -> Option<Self::Item>where
Self: Sized,
Self::Item: Ord,fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>where
B: Ord,
Self: Sized,
F: FnMut(&Self::Item) -> B,fn max_by<F>(self, compare: F) -> Option<Self::Item>where
Self: Sized,
F: FnMut(&Self::Item, &Self::Item) -> Ordering,fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>where
B: Ord,
Self: Sized,
F: FnMut(&Self::Item) -> B,fn min_by<F>(self, compare: F) -> Option<Self::Item>where
Self: Sized,
F: FnMut(&Self::Item, &Self::Item) -> Ordering,fn rev(self) -> Rev<Self> ⓘwhere
Self: Sized + DoubleEndedIterator,fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)where
FromA: Default + Extend<A>,
FromB: Default + Extend<B>,
Self: Sized + Iterator<Item = (A, B)>,fn copied<'a, T>(self) -> Copied<Self> ⓘwhere
T: Copy + 'a,
Self: Sized + Iterator<Item = &'a T>,fn cloned<'a, T>(self) -> Cloned<Self> ⓘwhere
T: Clone + 'a,
Self: Sized + Iterator<Item = &'a T>,fn cycle(self) -> Cycle<Self> ⓘwhere
Self: Sized + Clone,fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N> ⓘwhere
Self: Sized,iter_array_chunks #100450)
N elements of the iterator at a time. Read more
fn sum<S>(self) -> Swhere
Self: Sized,
S: Sum<Self::Item>,fn product<P>(self) -> Pwhere
Self: Sized,
P: Product<Self::Item>,fn cmp<I>(self, other: I) -> Orderingwhere
I: IntoIterator<Item = Self::Item>,
Self::Item: Ord,
Self: Sized,fn cmp_by<I, F>(self, other: I, cmp: F) -> Orderingwhere
Self: Sized,
I: IntoIterator,
F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,iter_order_by #64295)
Iterator with those of another with respect to the specified comparison function. Read more
fn partial_cmp<I>(self, other: I) -> Option<Ordering>where
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
Self: Sized,PartialOrd elements of this Iterator with those of another. The comparison works like short-circuit evaluation, returning a result without comparing the remaining elements. As soon as an order can be determined, the evaluation stops and a result is returned. Read more
fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>where
Self: Sized,
I: IntoIterator,
F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,iter_order_by #64295)
Iterator with those of another with respect to the specified comparison function. Read more
fn eq<I>(self, other: I) -> boolwhere
I: IntoIterator,
Self::Item: PartialEq<<I as IntoIterator>::Item>,
Self: Sized,fn eq_by<I, F>(self, other: I, eq: F) -> boolwhere
Self: Sized,
I: IntoIterator,
F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,iter_order_by #64295)
Iterator are equal to those of another with respect to the specified equality function. Read more
fn ne<I>(self, other: I) -> boolwhere
I: IntoIterator,
Self::Item: PartialEq<<I as IntoIterator>::Item>,
Self: Sized,fn lt<I>(self, other: I) -> boolwhere
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
Self: Sized,Iterator are lexicographically less than those of another. Read more
fn le<I>(self, other: I) -> boolwhere
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
Self: Sized,Iterator are lexicographically less or equal to those of another. Read more
fn gt<I>(self, other: I) -> boolwhere
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
Self: Sized,Iterator are lexicographically greater than those of another. Read more
fn ge<I>(self, other: I) -> boolwhere
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
Self: Sized,Iterator are lexicographically greater than or equal to those of another. Read more
fn is_sorted(self) -> boolwhere
Self: Sized,
Self::Item: PartialOrd,fn is_sorted_by<F>(self, compare: F) -> boolwhere
Self: Sized,
F: FnMut(&Self::Item, &Self::Item) -> bool,fn is_sorted_by_key<F, K>(self, f: F) -> boolwhere
Self: Sized,
F: FnMut(Self::Item) -> K,
K: PartialOrd,impl<I> FusedIterator for Enumerate<I>where
I: FusedIterator,impl<I> TrustedLen for Enumerate<I>where
I: TrustedLen,impl<I> Freeze for Enumerate<I>where
I: Freeze,impl<I> RefUnwindSafe for Enumerate<I>where
I: RefUnwindSafe,impl<I> Send for Enumerate<I>where
I: Send,impl<I> Sync for Enumerate<I>where
I: Sync,impl<I> Unpin for Enumerate<I>where
I: Unpin,impl<I> UnwindSafe for Enumerate<I>where
I: UnwindSafe,impl<T> Any for Twhere
T: 'static + ?Sized,impl<T> Borrow<T> for Twhere
T: ?Sized,impl<T> BorrowMut<T> for Twhere
T: ?Sized,impl<T> CloneToUninit for Twhere
T: Clone,unsafe fn clone_to_uninit(&self, dest: *mut u8)
clone_to_uninit #126799)
impl<T> From<T> for T
fn from(t: T) -> T
Returns the argument unchanged.
impl<T, U> Into<U> for Twhere
U: From<T>,fn into(self) -> U
Calls U::from(self).
That is, this conversion is whatever the implementation of From<T> for U chooses to do.
impl<I> IntoIterator for Iwhere
I: Iterator,type Item = <I as Iterator>::Item
type IntoIter = I
fn into_iter(self) -> I
impl<T> ToOwned for Twhere
T: Clone,type Owned = T
fn to_owned(&self) -> T
fn clone_into(&self, target: &mut T)
impl<T, U> TryFrom<U> for Twhere
U: Into<T>,type Error = Infallible
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
impl<T, U> TryInto<U> for Twhere
U: TryFrom<T>,
© 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/struct.Enumerate.html