pub struct IntoIter<T, const N: usize> { /* private fields */ }Expand description
A by-value array iterator.
Implementations
source impl<T, const N: usize> IntoIter<T, N>
impl<T, const N: usize> IntoIter<T, N>
source pub fn new(array: [T; N]) -> Self
👎 Deprecated since 1.59.0: use IntoIterator::into_iter instead
pub fn new(array: [T; N]) -> Self
use IntoIterator::into_iter instead
Creates a new iterator over the given array.
const: unstable · source pub unsafe fn new_unchecked(
buffer: [ MaybeUninit<T>; N],
initialized: Range<usize>
) -> Self
pub unsafe fn new_unchecked(
buffer: [ MaybeUninit<T>; N],
initialized: Range<usize>
) -> Self
Creates an iterator over the elements in a partially-initialized buffer.
If you have a fully-initialized array, then use IntoIterator.
But this is useful for returning partial results from unsafe code.
Safety
- The
buffer[initialized]elements must all be initialized. - The range must be canonical, with
initialized.start <= initialized.end. - The range must be in-bounds for the buffer, with
initialized.end <= N. (Like how indexing[0][100..100]fails despite the range being empty.)
It’s sound to have more elements initialized than mentioned, though that will most likely result in them being leaked.
Examples
#![feature(array_into_iter_constructors)]
#![feature(maybe_uninit_array_assume_init)]
#![feature(maybe_uninit_uninit_array)]
use std::array::IntoIter;
use std::mem::MaybeUninit;
fn next_chunk<T: Copy, const N: usize>(
it: &mut impl Iterator<Item = T>,
) -> Result<[T; N], IntoIter<T, N>> {
let mut buffer = MaybeUninit::uninit_array();
let mut i = 0;
while i < N {
match it.next() {
Some(x) => {
buffer[i].write(x);
i += 1;
}
None => {
// SAFETY: We've initialized the first `i` items
unsafe {
return Err(IntoIter::new_unchecked(buffer, 0..i));
}
}
}
}
// SAFETY: We've initialized all N items
unsafe { Ok(MaybeUninit::array_assume_init(buffer)) }
}
let r: [_; 4] = next_chunk(&mut (10..16)).unwrap();
assert_eq!(r, [10, 11, 12, 13]);
let r: IntoIter<_, 40> = next_chunk(&mut (10..16)).unwrap_err();
assert_eq!(r.collect::<Vec<_>>(), vec![10, 11, 12, 13, 14, 15]);Run const: unstable · source pub fn empty() -> Self
pub fn empty() -> Self
Creates an iterator over T which returns no elements.
If you just need an empty iterator, then use
iter::empty() instead.
And if you need an empty array, use [].
But this is useful when you need an array::IntoIter<T, N> specifically.
Examples
#![feature(array_into_iter_constructors)]
use std::array::IntoIter;
let empty = IntoIter::<i32, 3>::empty();
assert_eq!(empty.len(), 0);
assert_eq!(empty.as_slice(), &[]);
let empty = IntoIter::<std::convert::Infallible, 200>::empty();
assert_eq!(empty.len(), 0);Run [1, 2].into_iter() and [].into_iter() have different types
#![feature(array_into_iter_constructors)]
use std::array::IntoIter;
pub fn get_bytes(b: bool) -> IntoIter<i8, 4> {
if b {
[1, 2, 3, 4].into_iter()
} else {
[].into_iter() // error[E0308]: mismatched types
}
}But using this method you can get an empty iterator of appropriate size:
#![feature(array_into_iter_constructors)]
use std::array::IntoIter;
pub fn get_bytes(b: bool) -> IntoIter<i8, 4> {
if b {
[1, 2, 3, 4].into_iter()
} else {
IntoIter::empty()
}
}
assert_eq!(get_bytes(true).collect::<Vec<_>>(), vec![1, 2, 3, 4]);
assert_eq!(get_bytes(false).collect::<Vec<_>>(), vec![]);Run source pub fn as_slice(&self) -> &[T]
pub fn as_slice(&self) -> &[T]
Returns an immutable slice of all elements that have not been yielded yet.
source pub fn as_mut_slice(&mut self) -> &mut [T]
pub fn as_mut_slice(&mut self) -> &mut [T]
Returns a mutable slice of all elements that have not been yielded yet.
Trait Implementations
1.40.0 · source impl<T, const N: usize> DoubleEndedIterator for IntoIter<T, N>
impl<T, const N: usize> DoubleEndedIterator for IntoIter<T, N>
source fn next_back(&mut self) -> Option<Self::Item>
fn next_back(&mut self) -> Option<Self::Item>
Removes and returns an element from the end of the iterator. Read more
source fn rfold<Acc, Fold>(self, init: Acc, rfold: Fold) -> Acc where
Fold: FnMut(Acc, Self::Item) -> Acc,
fn rfold<Acc, Fold>(self, init: Acc, rfold: Fold) -> Acc where
Fold: FnMut(Acc, Self::Item) -> Acc,
An iterator method that reduces the iterator’s elements to a single, final value, starting from the back. Read more
source fn advance_back_by(&mut self, n: usize) -> Result<(), usize>
fn advance_back_by(&mut self, n: usize) -> Result<(), usize>
Advances the iterator from the back by n elements. Read more
1.37.0 · source fn nth_back(&mut self, n: usize) -> Option<Self::Item>
fn nth_back(&mut self, n: usize) -> Option<Self::Item>
Returns the nth element from the end of the iterator. Read more
1.40.0 · source impl<T, const N: usize> ExactSizeIterator for IntoIter<T, N>
impl<T, const N: usize> ExactSizeIterator for IntoIter<T, N>
1.40.0 · source impl<T, const N: usize> Iterator for IntoIter<T, N>
impl<T, const N: usize> Iterator for IntoIter<T, N>
type Item = T
type Item = T
The type of the elements being iterated over.
source fn next(&mut self) -> Option<Self::Item>
fn next(&mut self) -> Option<Self::Item>
Advances the iterator and returns the next value. Read more
source fn size_hint(&self) -> (usize, Option<usize>)
fn size_hint(&self) -> (usize, Option<usize>)
Returns the bounds on the remaining length of the iterator. Read more
source fn fold<Acc, Fold>(self, init: Acc, fold: Fold) -> Acc where
Fold: FnMut(Acc, Self::Item) -> Acc,
fn fold<Acc, Fold>(self, init: Acc, fold: Fold) -> Acc where
Fold: FnMut(Acc, Self::Item) -> Acc,
Folds every element into an accumulator by applying an operation, returning the final result. Read more
source fn count(self) -> usize
fn count(self) -> usize
Consumes the iterator, counting the number of iterations and returning it. Read more
source fn last(self) -> Option<Self::Item>
fn last(self) -> Option<Self::Item>
Consumes the iterator, returning the last element. Read more
source fn advance_by(&mut self, n: usize) -> Result<(), usize>
fn advance_by(&mut self, n: usize) -> Result<(), usize>
Advances the iterator by n elements. Read more
source fn next_chunk<const N: usize>(
&mut self
) -> Result<[Self::Item ; N], IntoIter<Self::Item, N>> where
Self: Sized,
fn next_chunk<const N: usize>(
&mut self
) -> Result<[Self::Item ; N], IntoIter<Self::Item, N>> where
Self: Sized,
Advances the iterator and returns an array containing the next N values. Read more
1.0.0 · source fn nth(&mut self, n: usize) -> Option<Self::Item>
fn nth(&mut self, n: usize) -> Option<Self::Item>
Returns the nth element of the iterator. Read more
1.28.0 · source fn step_by(self, step: usize) -> StepBy<Self>iNotable traits for StepBy<I>impl<I> Iterator for StepBy<I> where
I: Iterator, type Item = I::Item; where
Self: Sized,
fn step_by(self, step: usize) -> StepBy<Self>iNotable traits for StepBy<I>impl<I> Iterator for StepBy<I> where
I: Iterator, type Item = I::Item; where
Self: Sized,
I: Iterator, type Item = I::Item;
Creates an iterator starting at the same point, but stepping by the given amount at each iteration. Read more
1.0.0 · source fn chain<U>(self, other: U) -> Chain<Self, U::IntoIter>iNotable traits for Chain<A, B>impl<A, B> Iterator for Chain<A, B> where
A: Iterator,
B: Iterator<Item = A::Item>, type Item = A::Item; where
Self: Sized,
U: IntoIterator<Item = Self::Item>,
fn chain<U>(self, other: U) -> Chain<Self, U::IntoIter>iNotable traits for Chain<A, B>impl<A, B> Iterator for Chain<A, B> where
A: Iterator,
B: Iterator<Item = A::Item>, type Item = A::Item; where
Self: Sized,
U: IntoIterator<Item = Self::Item>,
A: Iterator,
B: Iterator<Item = A::Item>, type Item = A::Item;
Takes two iterators and creates a new iterator over both in sequence. Read more
1.0.0 · source fn zip<U>(self, other: U) -> Zip<Self, U::IntoIter>iNotable traits for Zip<A, B>impl<A, B> Iterator for Zip<A, B> where
A: Iterator,
B: Iterator, type Item = (A::Item, B::Item); where
Self: Sized,
U: IntoIterator,
fn zip<U>(self, other: U) -> Zip<Self, U::IntoIter>iNotable traits for Zip<A, B>impl<A, B> Iterator for Zip<A, B> where
A: Iterator,
B: Iterator, type Item = (A::Item, B::Item); where
Self: Sized,
U: IntoIterator,
A: Iterator,
B: Iterator, type Item = (A::Item, B::Item);
‘Zips up’ two iterators into a single iterator of pairs. Read more
source fn intersperse(self, separator: Self::Item) -> Intersperse<Self>iNotable traits for Intersperse<I>impl<I> Iterator for Intersperse<I> where
I: Iterator,
I::Item: Clone, type Item = I::Item; where
Self: Sized,
Self::Item: Clone,
fn intersperse(self, separator: Self::Item) -> Intersperse<Self>iNotable traits for Intersperse<I>impl<I> Iterator for Intersperse<I> where
I: Iterator,
I::Item: Clone, type Item = I::Item; where
Self: Sized,
Self::Item: Clone,
I: Iterator,
I::Item: Clone, type Item = I::Item;
Creates a new iterator which places a copy of separator between adjacent
items of the original iterator. Read more
source fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>iNotable traits for IntersperseWith<I, G>impl<I, G> Iterator for IntersperseWith<I, G> where
I: Iterator,
G: FnMut() -> I::Item, type Item = I::Item; where
Self: Sized,
G: FnMut() -> Self::Item,
fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>iNotable traits for IntersperseWith<I, G>impl<I, G> Iterator for IntersperseWith<I, G> where
I: Iterator,
G: FnMut() -> I::Item, type Item = I::Item; where
Self: Sized,
G: FnMut() -> Self::Item,
I: Iterator,
G: FnMut() -> I::Item, type Item = I::Item;
Creates a new iterator which places an item generated by separator
between adjacent items of the original iterator. Read more
1.0.0 · source fn map<B, F>(self, f: F) -> Map<Self, F>iNotable traits for Map<I, F>impl<B, I: Iterator, F> Iterator for Map<I, F> where
F: FnMut(I::Item) -> B, type Item = B; where
Self: Sized,
F: FnMut(Self::Item) -> B,
fn map<B, F>(self, f: F) -> Map<Self, F>iNotable traits for Map<I, F>impl<B, I: Iterator, F> Iterator for Map<I, F> where
F: FnMut(I::Item) -> B, type Item = B; where
Self: Sized,
F: FnMut(Self::Item) -> B,
F: FnMut(I::Item) -> B, type Item = B;
Takes a closure and creates an iterator which calls that closure on each element. Read more
1.21.0 · source fn for_each<F>(self, f: F) where
Self: Sized,
F: FnMut(Self::Item),
fn for_each<F>(self, f: F) where
Self: Sized,
F: FnMut(Self::Item),
Calls a closure on each element of an iterator. Read more
1.0.0 · source fn filter<P>(self, predicate: P) -> Filter<Self, P>iNotable traits for Filter<I, P>impl<I: Iterator, P> Iterator for Filter<I, P> where
P: FnMut(&I::Item) -> bool, type Item = I::Item; where
Self: Sized,
P: FnMut(&Self::Item) -> bool,
fn filter<P>(self, predicate: P) -> Filter<Self, P>iNotable traits for Filter<I, P>impl<I: Iterator, P> Iterator for Filter<I, P> where
P: FnMut(&I::Item) -> bool, type Item = I::Item; where
Self: Sized,
P: FnMut(&Self::Item) -> bool,
P: FnMut(&I::Item) -> bool, type Item = I::Item;
Creates an iterator which uses a closure to determine if an element should be yielded. Read more
1.0.0 · source fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>iNotable traits for FilterMap<I, F>impl<B, I: Iterator, F> Iterator for FilterMap<I, F> where
F: FnMut(I::Item) -> Option<B>, type Item = B; where
Self: Sized,
F: FnMut(Self::Item) -> Option<B>,
fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>iNotable traits for FilterMap<I, F>impl<B, I: Iterator, F> Iterator for FilterMap<I, F> where
F: FnMut(I::Item) -> Option<B>, type Item = B; where
Self: Sized,
F: FnMut(Self::Item) -> Option<B>,
F: FnMut(I::Item) -> Option<B>, type Item = B;
Creates an iterator that both filters and maps. Read more
1.0.0 · source fn enumerate(self) -> Enumerate<Self>iNotable traits for Enumerate<I>impl<I> Iterator for Enumerate<I> where
I: Iterator, type Item = (usize, <I as Iterator>::Item); where
Self: Sized,
fn enumerate(self) -> Enumerate<Self>iNotable traits for Enumerate<I>impl<I> Iterator for Enumerate<I> where
I: Iterator, type Item = (usize, <I as Iterator>::Item); where
Self: Sized,
I: Iterator, type Item = (usize, <I as Iterator>::Item);
Creates an iterator which gives the current iteration count as well as the next value. Read more
1.0.0 · source fn peekable(self) -> Peekable<Self>iNotable traits for Peekable<I>impl<I: Iterator> Iterator for Peekable<I> type Item = I::Item; where
Self: Sized,
fn peekable(self) -> Peekable<Self>iNotable traits for Peekable<I>impl<I: Iterator> Iterator for Peekable<I> type Item = I::Item; where
Self: Sized,
1.0.0 · source fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>iNotable traits for SkipWhile<I, P>impl<I: Iterator, P> Iterator for SkipWhile<I, P> where
P: FnMut(&I::Item) -> bool, type Item = I::Item; where
Self: Sized,
P: FnMut(&Self::Item) -> bool,
fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>iNotable traits for SkipWhile<I, P>impl<I: Iterator, P> Iterator for SkipWhile<I, P> where
P: FnMut(&I::Item) -> bool, type Item = I::Item; where
Self: Sized,
P: FnMut(&Self::Item) -> bool,
P: FnMut(&I::Item) -> bool, type Item = I::Item;
1.0.0 · source fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>iNotable traits for TakeWhile<I, P>impl<I: Iterator, P> Iterator for TakeWhile<I, P> where
P: FnMut(&I::Item) -> bool, type Item = I::Item; where
Self: Sized,
P: FnMut(&Self::Item) -> bool,
fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>iNotable traits for TakeWhile<I, P>impl<I: Iterator, P> Iterator for TakeWhile<I, P> where
P: FnMut(&I::Item) -> bool, type Item = I::Item; where
Self: Sized,
P: FnMut(&Self::Item) -> bool,
P: FnMut(&I::Item) -> bool, type Item = I::Item;
Creates an iterator that yields elements based on a predicate. Read more
1.57.0 · source fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>iNotable traits for MapWhile<I, P>impl<B, I: Iterator, P> Iterator for MapWhile<I, P> where
P: FnMut(I::Item) -> Option<B>, type Item = B; where
Self: Sized,
P: FnMut(Self::Item) -> Option<B>,
fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>iNotable traits for MapWhile<I, P>impl<B, I: Iterator, P> Iterator for MapWhile<I, P> where
P: FnMut(I::Item) -> Option<B>, type Item = B; where
Self: Sized,
P: FnMut(Self::Item) -> Option<B>,
P: FnMut(I::Item) -> Option<B>, type Item = B;
Creates an iterator that both yields elements based on a predicate and maps. Read more
1.0.0 · source fn skip(self, n: usize) -> Skip<Self>iNotable traits for Skip<I>impl<I> Iterator for Skip<I> where
I: Iterator, type Item = <I as Iterator>::Item; where
Self: Sized,
fn skip(self, n: usize) -> Skip<Self>iNotable traits for Skip<I>impl<I> Iterator for Skip<I> where
I: Iterator, type Item = <I as Iterator>::Item; where
Self: Sized,
I: Iterator, type Item = <I as Iterator>::Item;
Creates an iterator that skips the first n elements. Read more
1.0.0 · source fn take(self, n: usize) -> Take<Self>iNotable traits for Take<I>impl<I> Iterator for Take<I> where
I: Iterator, type Item = <I as Iterator>::Item; where
Self: Sized,
fn take(self, n: usize) -> Take<Self>iNotable traits for Take<I>impl<I> Iterator for Take<I> where
I: Iterator, type Item = <I as Iterator>::Item; where
Self: Sized,
I: Iterator, type Item = <I as Iterator>::Item;
Creates an iterator that yields the first n elements, or fewer
if the underlying iterator ends sooner. Read more
1.0.0 · source fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>iNotable traits for Scan<I, St, F>impl<B, I, St, F> Iterator for Scan<I, St, F> where
I: Iterator,
F: FnMut(&mut St, I::Item) -> Option<B>, type Item = B; where
Self: Sized,
F: FnMut(&mut St, Self::Item) -> Option<B>,
fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>iNotable traits for Scan<I, St, F>impl<B, I, St, F> Iterator for Scan<I, St, F> where
I: Iterator,
F: FnMut(&mut St, I::Item) -> Option<B>, type Item = B; where
Self: Sized,
F: FnMut(&mut St, Self::Item) -> Option<B>,
I: Iterator,
F: FnMut(&mut St, I::Item) -> Option<B>, type Item = B;
1.0.0 · source fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>iNotable traits for FlatMap<I, U, F>impl<I: Iterator, U: IntoIterator, F> Iterator for FlatMap<I, U, F> where
F: FnMut(I::Item) -> U, type Item = U::Item; where
Self: Sized,
U: IntoIterator,
F: FnMut(Self::Item) -> U,
fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>iNotable traits for FlatMap<I, U, F>impl<I: Iterator, U: IntoIterator, F> Iterator for FlatMap<I, U, F> where
F: FnMut(I::Item) -> U, type Item = U::Item; where
Self: Sized,
U: IntoIterator,
F: FnMut(Self::Item) -> U,
F: FnMut(I::Item) -> U, type Item = U::Item;
Creates an iterator that works like map, but flattens nested structure. Read more
1.29.0 · source fn flatten(self) -> Flatten<Self>iNotable traits for Flatten<I>impl<I, U> Iterator for Flatten<I> where
I: Iterator<Item: IntoIterator<IntoIter = U, Item = U::Item>>,
U: Iterator, type Item = U::Item; where
Self: Sized,
Self::Item: IntoIterator,
fn flatten(self) -> Flatten<Self>iNotable traits for Flatten<I>impl<I, U> Iterator for Flatten<I> where
I: Iterator<Item: IntoIterator<IntoIter = U, Item = U::Item>>,
U: Iterator, type Item = U::Item; where
Self: Sized,
Self::Item: IntoIterator,
I: Iterator<Item: IntoIterator<IntoIter = U, Item = U::Item>>,
U: Iterator, type Item = U::Item;
Creates an iterator that flattens nested structure. Read more
1.0.0 · source fn fuse(self) -> Fuse<Self>iNotable traits for Fuse<I>impl<I> Iterator for Fuse<I> where
I: Iterator, type Item = <I as Iterator>::Item; where
Self: Sized,
fn fuse(self) -> Fuse<Self>iNotable traits for Fuse<I>impl<I> Iterator for Fuse<I> where
I: Iterator, type Item = <I as Iterator>::Item; where
Self: Sized,
I: Iterator, type Item = <I as Iterator>::Item;
1.0.0 · source fn inspect<F>(self, f: F) -> Inspect<Self, F>iNotable traits for Inspect<I, F>impl<I: Iterator, F> Iterator for Inspect<I, F> where
F: FnMut(&I::Item), type Item = I::Item; where
Self: Sized,
F: FnMut(&Self::Item),
fn inspect<F>(self, f: F) -> Inspect<Self, F>iNotable traits for Inspect<I, F>impl<I: Iterator, F> Iterator for Inspect<I, F> where
F: FnMut(&I::Item), type Item = I::Item; where
Self: Sized,
F: FnMut(&Self::Item),
F: FnMut(&I::Item), type Item = I::Item;
Does something with each element of an iterator, passing the value on. Read more
1.0.0 · source fn by_ref(&mut self) -> &mut Self where
Self: Sized,
fn by_ref(&mut self) -> &mut Self where
Self: Sized,
Borrows an iterator, rather than consuming it. Read more
1.0.0 · source fn collect<B: FromIterator<Self::Item>>(self) -> B where
Self: Sized,
fn collect<B: FromIterator<Self::Item>>(self) -> B where
Self: Sized,
Transforms an iterator into a collection. Read more
source fn try_collect<B>(
&mut self
) -> <<Self::Item as Try>::Residual as Residual<B>>::TryType where
Self: Sized,
<Self as Iterator>::Item: Try,
<<Self as Iterator>::Item as Try>::Residual: Residual<B>,
B: FromIterator<<Self::Item as Try>::Output>,
fn try_collect<B>(
&mut self
) -> <<Self::Item as Try>::Residual as Residual<B>>::TryType where
Self: Sized,
<Self as Iterator>::Item: Try,
<<Self as Iterator>::Item as Try>::Residual: Residual<B>,
B: FromIterator<<Self::Item as Try>::Output>,
Fallibly transforms an iterator into a collection, short circuiting if a failure is encountered. Read more
source fn collect_into<E: Extend<Self::Item>>(self, collection: &mut E) -> &mut E where
Self: Sized,
fn collect_into<E: Extend<Self::Item>>(self, collection: &mut E) -> &mut E where
Self: Sized,
Collects all the items from an iterator into a collection. Read more
1.0.0 · source fn partition<B, F>(self, f: F) -> (B, B) where
Self: Sized,
B: Default + Extend<Self::Item>,
F: FnMut(&Self::Item) -> bool,
fn partition<B, F>(self, f: F) -> (B, B) where
Self: Sized,
B: Default + Extend<Self::Item>,
F: FnMut(&Self::Item) -> bool,
Consumes an iterator, creating two collections from it. Read more
source fn partition_in_place<'a, T: 'a, P>(self, predicate: P) -> usize where
Self: Sized + DoubleEndedIterator<Item = &'a mut T>,
P: FnMut(&T) -> bool,
fn partition_in_place<'a, T: 'a, P>(self, predicate: P) -> usize where
Self: Sized + DoubleEndedIterator<Item = &'a mut T>,
P: FnMut(&T) -> bool,
Reorders the elements of this iterator in-place according to the given predicate,
such that all those that return true precede all those that return false.
Returns the number of true elements found. Read more
source fn is_partitioned<P>(self, predicate: P) -> bool where
Self: Sized,
P: FnMut(Self::Item) -> bool,
fn is_partitioned<P>(self, predicate: P) -> bool where
Self: Sized,
P: FnMut(Self::Item) -> bool,
Checks if the elements of this iterator are partitioned according to the given predicate,
such that all those that return true precede all those that return false. Read more
1.27.0 · source fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R where
Self: Sized,
F: FnMut(B, Self::Item) -> R,
R: Try<Output = B>,
fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R where
Self: Sized,
F: FnMut(B, Self::Item) -> R,
R: Try<Output = B>,
An iterator method that applies a function as long as it returns successfully, producing a single, final value. Read more
1.27.0 · source fn try_for_each<F, R>(&mut self, f: F) -> R where
Self: Sized,
F: FnMut(Self::Item) -> R,
R: Try<Output = ()>,
fn try_for_each<F, R>(&mut self, f: F) -> R where
Self: Sized,
F: FnMut(Self::Item) -> R,
R: Try<Output = ()>,
An iterator method that applies a fallible function to each item in the iterator, stopping at the first error and returning that error. Read more
source fn reduce<F>(self, f: F) -> Option<Self::Item> where
Self: Sized,
F: FnMut(Self::Item, Self::Item) -> Self::Item,
fn reduce<F>(self, f: F) -> Option<Self::Item> where
Self: Sized,
F: FnMut(Self::Item, Self::Item) -> Self::Item,
Reduces the elements to a single one, by repeatedly applying a reducing operation. Read more
source fn try_reduce<F, R>(
&mut self,
f: F
) -> <<R as Try>::Residual as Residual<Option<R::Output>>>::TryType where
Self: Sized,
F: FnMut(Self::Item, Self::Item) -> R,
R: Try<Output = Self::Item>,
R::Residual: Residual<Option<Self::Item>>,
fn try_reduce<F, R>(
&mut self,
f: F
) -> <<R as Try>::Residual as Residual<Option<R::Output>>>::TryType where
Self: Sized,
F: FnMut(Self::Item, Self::Item) -> R,
R: Try<Output = Self::Item>,
R::Residual: Residual<Option<Self::Item>>,
Reduces the elements to a single one by repeatedly applying a reducing operation. If the closure returns a failure, the failure is propagated back to the caller immediately. Read more
1.0.0 · source fn all<F>(&mut self, f: F) -> bool where
Self: Sized,
F: FnMut(Self::Item) -> bool,
fn all<F>(&mut self, f: F) -> bool where
Self: Sized,
F: FnMut(Self::Item) -> bool,
Tests if every element of the iterator matches a predicate. Read more
1.0.0 · source fn any<F>(&mut self, f: F) -> bool where
Self: Sized,
F: FnMut(Self::Item) -> bool,
fn any<F>(&mut self, f: F) -> bool where
Self: Sized,
F: FnMut(Self::Item) -> bool,
Tests if any element of the iterator matches a predicate. Read more
1.0.0 · source fn find<P>(&mut self, predicate: P) -> Option<Self::Item> where
Self: Sized,
P: FnMut(&Self::Item) -> bool,
fn find<P>(&mut self, predicate: P) -> Option<Self::Item> where
Self: Sized,
P: FnMut(&Self::Item) -> bool,
Searches for an element of an iterator that satisfies a predicate. Read more
1.30.0 · source fn find_map<B, F>(&mut self, f: F) -> Option<B> where
Self: Sized,
F: FnMut(Self::Item) -> Option<B>,
fn find_map<B, F>(&mut self, f: F) -> Option<B> where
Self: Sized,
F: FnMut(Self::Item) -> Option<B>,
Applies function to the elements of iterator and returns the first non-none result. Read more
source fn try_find<F, R>(
&mut self,
f: F
) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType where
Self: Sized,
F: FnMut(&Self::Item) -> R,
R: Try<Output = bool>,
R::Residual: Residual<Option<Self::Item>>,
fn try_find<F, R>(
&mut self,
f: F
) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType where
Self: Sized,
F: FnMut(&Self::Item) -> R,
R: Try<Output = bool>,
R::Residual: Residual<Option<Self::Item>>,
Applies function to the elements of iterator and returns the first true result or the first error. Read more
1.0.0 · source fn position<P>(&mut self, predicate: P) -> Option<usize> where
Self: Sized,
P: FnMut(Self::Item) -> bool,
fn position<P>(&mut self, predicate: P) -> Option<usize> where
Self: Sized,
P: FnMut(Self::Item) -> bool,
Searches for an element in an iterator, returning its index. Read more
1.0.0 · source fn rposition<P>(&mut self, predicate: P) -> Option<usize> where
P: FnMut(Self::Item) -> bool,
Self: Sized + ExactSizeIterator + DoubleEndedIterator,
fn rposition<P>(&mut self, predicate: P) -> Option<usize> where
P: FnMut(Self::Item) -> bool,
Self: Sized + ExactSizeIterator + DoubleEndedIterator,
Searches for an element in an iterator from the right, returning its index. Read more
1.0.0 · source fn max(self) -> Option<Self::Item> where
Self: Sized,
Self::Item: Ord,
fn max(self) -> Option<Self::Item> where
Self: Sized,
Self::Item: Ord,
Returns the maximum element of an iterator. Read more
1.0.0 · source fn min(self) -> Option<Self::Item> where
Self: Sized,
Self::Item: Ord,
fn min(self) -> Option<Self::Item> where
Self: Sized,
Self::Item: Ord,
Returns the minimum element of an iterator. Read more
1.6.0 · source fn max_by_key<B: Ord, F>(self, f: F) -> Option<Self::Item> where
Self: Sized,
F: FnMut(&Self::Item) -> B,
fn max_by_key<B: Ord, F>(self, f: F) -> Option<Self::Item> where
Self: Sized,
F: FnMut(&Self::Item) -> B,
Returns the element that gives the maximum value from the specified function. Read more
1.15.0 · source fn max_by<F>(self, compare: F) -> Option<Self::Item> where
Self: Sized,
F: FnMut(&Self::Item, &Self::Item) -> Ordering,
fn max_by<F>(self, compare: F) -> Option<Self::Item> where
Self: Sized,
F: FnMut(&Self::Item, &Self::Item) -> Ordering,
Returns the element that gives the maximum value with respect to the specified comparison function. Read more
1.6.0 · source fn min_by_key<B: Ord, F>(self, f: F) -> Option<Self::Item> where
Self: Sized,
F: FnMut(&Self::Item) -> B,
fn min_by_key<B: Ord, F>(self, f: F) -> Option<Self::Item> where
Self: Sized,
F: FnMut(&Self::Item) -> B,
Returns the element that gives the minimum value from the specified function. Read more
1.15.0 · source fn min_by<F>(self, compare: F) -> Option<Self::Item> where
Self: Sized,
F: FnMut(&Self::Item, &Self::Item) -> Ordering,
fn min_by<F>(self, compare: F) -> Option<Self::Item> where
Self: Sized,
F: FnMut(&Self::Item, &Self::Item) -> Ordering,
Returns the element that gives the minimum value with respect to the specified comparison function. Read more
1.0.0 · source fn rev(self) -> Rev<Self>iNotable traits for Rev<I>impl<I> Iterator for Rev<I> where
I: DoubleEndedIterator, type Item = <I as Iterator>::Item; where
Self: Sized + DoubleEndedIterator,
fn rev(self) -> Rev<Self>iNotable traits for Rev<I>impl<I> Iterator for Rev<I> where
I: DoubleEndedIterator, type Item = <I as Iterator>::Item; where
Self: Sized + DoubleEndedIterator,
I: DoubleEndedIterator, type Item = <I as Iterator>::Item;
Reverses an iterator’s direction. Read more
1.0.0 · source 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 unzip<A, B, FromA, FromB>(self) -> (FromA, FromB) where
FromA: Default + Extend<A>,
FromB: Default + Extend<B>,
Self: Sized + Iterator<Item = (A, B)>,
Converts an iterator of pairs into a pair of containers. Read more
1.36.0 · source fn copied<'a, T: 'a>(self) -> Copied<Self>iNotable traits for Copied<I>impl<'a, I, T: 'a> Iterator for Copied<I> where
I: Iterator<Item = &'a T>,
T: Copy, type Item = T; where
Self: Sized + Iterator<Item = &'a T>,
T: Copy,
fn copied<'a, T: 'a>(self) -> Copied<Self>iNotable traits for Copied<I>impl<'a, I, T: 'a> Iterator for Copied<I> where
I: Iterator<Item = &'a T>,
T: Copy, type Item = T; where
Self: Sized + Iterator<Item = &'a T>,
T: Copy,
I: Iterator<Item = &'a T>,
T: Copy, type Item = T;
Creates an iterator which copies all of its elements. Read more
1.0.0 · source fn cloned<'a, T: 'a>(self) -> Cloned<Self>iNotable traits for Cloned<I>impl<'a, I, T: 'a> Iterator for Cloned<I> where
I: Iterator<Item = &'a T>,
T: Clone, type Item = T; where
Self: Sized + Iterator<Item = &'a T>,
T: Clone,
fn cloned<'a, T: 'a>(self) -> Cloned<Self>iNotable traits for Cloned<I>impl<'a, I, T: 'a> Iterator for Cloned<I> where
I: Iterator<Item = &'a T>,
T: Clone, type Item = T; where
Self: Sized + Iterator<Item = &'a T>,
T: Clone,
I: Iterator<Item = &'a T>,
T: Clone, type Item = T;
1.0.0 · source fn cycle(self) -> Cycle<Self>iNotable traits for Cycle<I>impl<I> Iterator for Cycle<I> where
I: Clone + Iterator, type Item = <I as Iterator>::Item; where
Self: Sized + Clone,
fn cycle(self) -> Cycle<Self>iNotable traits for Cycle<I>impl<I> Iterator for Cycle<I> where
I: Clone + Iterator, type Item = <I as Iterator>::Item; where
Self: Sized + Clone,
I: Clone + Iterator, type Item = <I as Iterator>::Item;
Repeats an iterator endlessly. Read more
1.11.0 · source fn sum<S>(self) -> S where
Self: Sized,
S: Sum<Self::Item>,
fn sum<S>(self) -> S where
Self: Sized,
S: Sum<Self::Item>,
Sums the elements of an iterator. Read more
1.11.0 · source fn product<P>(self) -> P where
Self: Sized,
P: Product<Self::Item>,
fn product<P>(self) -> P where
Self: Sized,
P: Product<Self::Item>,
Iterates over the entire iterator, multiplying all the elements Read more
1.5.0 · source fn cmp<I>(self, other: I) -> Ordering where
I: IntoIterator<Item = Self::Item>,
Self::Item: Ord,
Self: Sized,
fn cmp<I>(self, other: I) -> Ordering where
I: IntoIterator<Item = Self::Item>,
Self::Item: Ord,
Self: Sized,
Lexicographically compares the elements of this Iterator with those
of another. Read more
source fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering where
Self: Sized,
I: IntoIterator,
F: FnMut(Self::Item, I::Item) -> Ordering,
fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering where
Self: Sized,
I: IntoIterator,
F: FnMut(Self::Item, I::Item) -> Ordering,
Lexicographically compares the elements of this Iterator with those
of another with respect to the specified comparison function. Read more
1.5.0 · source fn partial_cmp<I>(self, other: I) -> Option<Ordering> where
I: IntoIterator,
Self::Item: PartialOrd<I::Item>,
Self: Sized,
fn partial_cmp<I>(self, other: I) -> Option<Ordering> where
I: IntoIterator,
Self::Item: PartialOrd<I::Item>,
Self: Sized,
Lexicographically compares the elements of this Iterator with those
of another. Read more
source fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering> where
Self: Sized,
I: IntoIterator,
F: FnMut(Self::Item, I::Item) -> Option<Ordering>,
fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering> where
Self: Sized,
I: IntoIterator,
F: FnMut(Self::Item, I::Item) -> Option<Ordering>,
Lexicographically compares the elements of this Iterator with those
of another with respect to the specified comparison function. Read more
1.5.0 · source fn eq<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialEq<I::Item>,
Self: Sized,
fn eq<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialEq<I::Item>,
Self: Sized,
source fn eq_by<I, F>(self, other: I, eq: F) -> bool where
Self: Sized,
I: IntoIterator,
F: FnMut(Self::Item, I::Item) -> bool,
fn eq_by<I, F>(self, other: I, eq: F) -> bool where
Self: Sized,
I: IntoIterator,
F: FnMut(Self::Item, I::Item) -> bool,
1.5.0 · source fn ne<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialEq<I::Item>,
Self: Sized,
fn ne<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialEq<I::Item>,
Self: Sized,
1.5.0 · source fn lt<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialOrd<I::Item>,
Self: Sized,
fn lt<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialOrd<I::Item>,
Self: Sized,
Determines if the elements of this Iterator are lexicographically
less than those of another. Read more
1.5.0 · source fn le<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialOrd<I::Item>,
Self: Sized,
fn le<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialOrd<I::Item>,
Self: Sized,
Determines if the elements of this Iterator are lexicographically
less or equal to those of another. Read more
1.5.0 · source fn gt<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialOrd<I::Item>,
Self: Sized,
fn gt<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialOrd<I::Item>,
Self: Sized,
Determines if the elements of this Iterator are lexicographically
greater than those of another. Read more
1.5.0 · source fn ge<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialOrd<I::Item>,
Self: Sized,
fn ge<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialOrd<I::Item>,
Self: Sized,
Determines if the elements of this Iterator are lexicographically
greater than or equal to those of another. Read more
source fn is_sorted(self) -> bool where
Self: Sized,
Self::Item: PartialOrd,
fn is_sorted(self) -> bool where
Self: Sized,
Self::Item: PartialOrd,
Checks if the elements of this iterator are sorted. Read more
source fn is_sorted_by<F>(self, compare: F) -> bool where
Self: Sized,
F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,
fn is_sorted_by<F>(self, compare: F) -> bool where
Self: Sized,
F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,
Checks if the elements of this iterator are sorted using the given comparator function. Read more
source fn is_sorted_by_key<F, K>(self, f: F) -> bool where
Self: Sized,
F: FnMut(Self::Item) -> K,
K: PartialOrd,
fn is_sorted_by_key<F, K>(self, f: F) -> bool where
Self: Sized,
F: FnMut(Self::Item) -> K,
K: PartialOrd,
Checks if the elements of this iterator are sorted using the given key extraction function. Read more
impl<T, const N: usize> FusedIterator for IntoIter<T, N>
impl<T, const N: usize> TrustedLen for IntoIter<T, N>
Auto Trait Implementations
impl<T, const N: usize> RefUnwindSafe for IntoIter<T, N> where
T: RefUnwindSafe,
impl<T, const N: usize> Send for IntoIter<T, N> where
T: Send,
impl<T, const N: usize> Sync for IntoIter<T, N> where
T: Sync,
impl<T, const N: usize> Unpin for IntoIter<T, N> where
T: Unpin,
impl<T, const N: usize> UnwindSafe for IntoIter<T, N> where
T: UnwindSafe,
Blanket Implementations
source impl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · source fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more