pub struct IntoIter<T, A: Allocator = Global> {
pub(super) buf: NonNull<T>,
pub(super) phantom: PhantomData<T>,
pub(super) cap: usize,
pub(super) alloc: ManuallyDrop<A>,
pub(super) ptr: NonNull<T>,
pub(super) end: *const T,
}
Expand description
An iterator that moves out of a vector.
This struct
is created by the into_iter
method on Vec
(provided by the IntoIterator
trait).
§Example
Fields§
§buf: NonNull<T>
§phantom: PhantomData<T>
§cap: usize
§alloc: ManuallyDrop<A>
§ptr: NonNull<T>
§end: *const T
If T is a ZST, this is actually ptr+len. This encoding is picked so that
ptr == end is a quick test for the Iterator being empty, that works
for both ZST and non-ZST.
For non-ZSTs the pointer is treated as NonNull<T>
Implementations§
Source§impl<T, A: Allocator> IntoIter<T, A>
impl<T, A: Allocator> IntoIter<T, A>
1.15.0 · Sourcepub fn as_slice(&self) -> &[T]
pub fn as_slice(&self) -> &[T]
Returns the remaining items of this iterator as a slice.
§Examples
1.15.0 · Sourcepub fn as_mut_slice(&mut self) -> &mut [T]
pub fn as_mut_slice(&mut self) -> &mut [T]
Returns the remaining items of this iterator as a mutable slice.
§Examples
Sourcepub fn allocator(&self) -> &A
🔬This is a nightly-only experimental API. (allocator_api
#32838)
pub fn allocator(&self) -> &A
allocator_api
#32838)Returns a reference to the underlying allocator.
fn as_raw_mut_slice(&mut self) -> *mut [T]
Sourcepub(super) fn forget_allocation_drop_remaining(&mut self)
pub(super) fn forget_allocation_drop_remaining(&mut self)
Drops remaining elements and relinquishes the backing allocation.
This method guarantees it won’t panic before relinquishing the backing allocation.
This is roughly equivalent to the following, but more efficient
let mut into_iter = std::mem::replace(&mut into_iter, Vec::new().into_iter());
(&mut into_iter).for_each(drop);
std::mem::forget(into_iter);
This method is used by in-place iteration, refer to the vec::in_place_collect documentation for an overview.
Sourcepub(crate) fn forget_remaining_elements(&mut self)
pub(crate) fn forget_remaining_elements(&mut self)
Forgets to Drop the remaining elements while still allowing the backing allocation to be freed.
pub(crate) fn into_vecdeque(self) -> VecDeque<T, A>
Trait Implementations§
Source§impl<T> AsVecIntoIter for IntoIter<T>
impl<T> AsVecIntoIter for IntoIter<T>
1.0.0 · Source§impl<T, A: Allocator> DoubleEndedIterator for IntoIter<T, A>
impl<T, A: Allocator> DoubleEndedIterator for IntoIter<T, A>
Source§fn next_back(&mut self) -> Option<T>
fn next_back(&mut self) -> Option<T>
Source§fn advance_back_by(&mut self, n: usize) -> Result<(), NonZero<usize>>
fn advance_back_by(&mut self, n: usize) -> Result<(), NonZero<usize>>
iter_advance_by
#77404)n
elements. Read more1.37.0 · Source§fn nth_back(&mut self, n: usize) -> Option<Self::Item>
fn nth_back(&mut self, n: usize) -> Option<Self::Item>
n
th element from the end of the iterator. Read more1.27.0 · Source§fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> R
fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> R
Iterator::try_fold()
: it takes
elements starting from the back of the iterator. Read more1.0.0 · Source§impl<T, A: Allocator> ExactSizeIterator for IntoIter<T, A>
impl<T, A: Allocator> ExactSizeIterator for IntoIter<T, A>
Source§impl<T, A: Allocator> InPlaceIterable for IntoIter<T, A>
impl<T, A: Allocator> InPlaceIterable for IntoIter<T, A>
Source§const EXPAND_BY: Option<NonZero<usize>>
const EXPAND_BY: Option<NonZero<usize>>
inplace_iteration
)EXPAND_BY
of 16.
This is an upper bound, i.e. the transformations will produce at most this many items per
input. It’s meant for layout calculations.Source§const MERGE_BY: Option<NonZero<usize>>
const MERGE_BY: Option<NonZero<usize>>
inplace_iteration
)MERGE_BY
of 16.
This is a lower bound, i.e. the transformations will consume at least this many items per
output.1.0.0 · Source§impl<T, A: Allocator> Iterator for IntoIter<T, A>
impl<T, A: Allocator> Iterator for IntoIter<T, A>
Source§fn size_hint(&self) -> (usize, Option<usize>)
fn size_hint(&self) -> (usize, Option<usize>)
Source§fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>
fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>
iter_advance_by
#77404)n
elements. Read moreSource§fn count(self) -> usize
fn count(self) -> usize
Source§fn next_chunk<const N: usize>(&mut self) -> Result<[T; N], IntoIter<T, N>>
fn next_chunk<const N: usize>(&mut self) -> Result<[T; N], IntoIter<T, N>>
iter_next_chunk
#98326)N
values. Read moreSource§fn fold<B, F>(self, accum: B, f: F) -> B
fn fold<B, F>(self, accum: B, f: F) -> B
Source§fn try_fold<B, F, R>(&mut self, accum: B, f: F) -> R
fn try_fold<B, F, R>(&mut self, accum: B, f: F) -> R
Source§unsafe fn __iterator_get_unchecked(&mut self, i: usize) -> Self::Itemwhere
Self: TrustedRandomAccessNoCoerce,
unsafe fn __iterator_get_unchecked(&mut self, i: usize) -> Self::Itemwhere
Self: TrustedRandomAccessNoCoerce,
trusted_random_access
)1.0.0 · Source§fn last(self) -> Option<Self::Item>where
Self: Sized,
fn last(self) -> Option<Self::Item>where
Self: Sized,
1.0.0 · Source§fn nth(&mut self, n: usize) -> Option<Self::Item>
fn nth(&mut self, n: usize) -> Option<Self::Item>
n
th element of the iterator. Read more1.28.0 · Source§fn step_by(self, step: usize) -> StepBy<Self>where
Self: Sized,
fn step_by(self, step: usize) -> StepBy<Self>where
Self: Sized,
1.0.0 · Source§fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
1.0.0 · Source§fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>where
Self: Sized,
U: IntoIterator,
fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>where
Self: Sized,
U: IntoIterator,
Source§fn intersperse(self, separator: Self::Item) -> Intersperse<Self>
fn intersperse(self, separator: Self::Item) -> Intersperse<Self>
iter_intersperse
#79524)separator
between adjacent
items of the original iterator. Read moreSource§fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
iter_intersperse
#79524)separator
between adjacent items of the original iterator. Read more1.0.0 · Source§fn map<B, F>(self, f: F) -> Map<Self, F>
fn map<B, F>(self, f: F) -> Map<Self, F>
1.0.0 · Source§fn filter<P>(self, predicate: P) -> Filter<Self, P>
fn filter<P>(self, predicate: P) -> Filter<Self, P>
1.0.0 · Source§fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
1.0.0 · Source§fn enumerate(self) -> Enumerate<Self>where
Self: Sized,
fn enumerate(self) -> Enumerate<Self>where
Self: Sized,
1.0.0 · Source§fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
1.0.0 · Source§fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
1.57.0 · Source§fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
1.0.0 · Source§fn skip(self, n: usize) -> Skip<Self>where
Self: Sized,
fn skip(self, n: usize) -> Skip<Self>where
Self: Sized,
n
elements. Read more1.0.0 · Source§fn take(self, n: usize) -> Take<Self>where
Self: Sized,
fn take(self, n: usize) -> Take<Self>where
Self: Sized,
n
elements, or fewer
if the underlying iterator ends sooner. Read more1.0.0 · Source§fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
1.29.0 · Source§fn flatten(self) -> Flatten<Self>
fn flatten(self) -> Flatten<Self>
Source§fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
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 more1.0.0 · Source§fn inspect<F>(self, f: F) -> Inspect<Self, F>
fn inspect<F>(self, f: F) -> Inspect<Self, F>
1.0.0 · Source§fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
Iterator
. Read moreSource§fn try_collect<B>(
&mut self,
) -> <<Self::Item as Try>::Residual as Residual<B>>::TryType
fn try_collect<B>( &mut self, ) -> <<Self::Item as Try>::Residual as Residual<B>>::TryType
iterator_try_collect
#94047)Source§fn collect_into<E>(self, collection: &mut E) -> &mut E
fn collect_into<E>(self, collection: &mut E) -> &mut E
iter_collect_into
#94780)1.0.0 · Source§fn partition<B, F>(self, f: F) -> (B, B)
fn partition<B, F>(self, f: F) -> (B, B)
Source§fn partition_in_place<'a, T, P>(self, predicate: P) -> usize
fn partition_in_place<'a, T, P>(self, predicate: P) -> usize
iter_partition_in_place
#62543)true
precede all those that return false
.
Returns the number of true
elements found. Read moreSource§fn is_partitioned<P>(self, predicate: P) -> bool
fn is_partitioned<P>(self, predicate: P) -> bool
iter_is_partitioned
#62544)true
precede all those that return false
. Read more1.27.0 · Source§fn try_for_each<F, R>(&mut self, f: F) -> R
fn try_for_each<F, R>(&mut self, f: F) -> R
1.51.0 · Source§fn reduce<F>(self, f: F) -> Option<Self::Item>
fn reduce<F>(self, f: F) -> Option<Self::Item>
Source§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>>>::TryType
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>>>::TryType
iterator_try_reduce
#87053)1.0.0 · Source§fn all<F>(&mut self, f: F) -> bool
fn all<F>(&mut self, f: F) -> bool
1.0.0 · Source§fn any<F>(&mut self, f: F) -> bool
fn any<F>(&mut self, f: F) -> bool
1.0.0 · Source§fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
1.30.0 · Source§fn find_map<B, F>(&mut self, f: F) -> Option<B>
fn find_map<B, F>(&mut self, f: F) -> Option<B>
Source§fn try_find<R>(
&mut self,
f: impl FnMut(&Self::Item) -> R,
) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
fn try_find<R>( &mut self, f: impl FnMut(&Self::Item) -> R, ) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
try_find
#63178)1.0.0 · Source§fn position<P>(&mut self, predicate: P) -> Option<usize>
fn position<P>(&mut self, predicate: P) -> Option<usize>
1.0.0 · Source§fn rposition<P>(&mut self, predicate: P) -> Option<usize>
fn rposition<P>(&mut self, predicate: P) -> Option<usize>
1.0.0 · Source§fn max(self) -> Option<Self::Item>
fn max(self) -> Option<Self::Item>
1.0.0 · Source§fn min(self) -> Option<Self::Item>
fn min(self) -> Option<Self::Item>
1.6.0 · Source§fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
1.15.0 · Source§fn max_by<F>(self, compare: F) -> Option<Self::Item>
fn max_by<F>(self, compare: F) -> Option<Self::Item>
1.6.0 · Source§fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
1.15.0 · Source§fn min_by<F>(self, compare: F) -> Option<Self::Item>
fn min_by<F>(self, compare: F) -> Option<Self::Item>
1.0.0 · Source§fn rev(self) -> Rev<Self>where
Self: Sized + DoubleEndedIterator,
fn rev(self) -> Rev<Self>where
Self: Sized + DoubleEndedIterator,
1.0.0 · Source§fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
1.36.0 · Source§fn copied<'a, T>(self) -> Copied<Self>
fn copied<'a, T>(self) -> Copied<Self>
Source§fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>where
Self: Sized,
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 more1.11.0 · Source§fn product<P>(self) -> P
fn product<P>(self) -> P
Source§fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
iter_order_by
#64295)Iterator
with those
of another with respect to the specified comparison function. Read more1.5.0 · Source§fn partial_cmp<I>(self, other: I) -> Option<Ordering>
fn partial_cmp<I>(self, other: I) -> Option<Ordering>
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 moreSource§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>,
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 moreSource§fn eq_by<I, F>(self, other: I, eq: F) -> bool
fn eq_by<I, F>(self, other: I, eq: F) -> bool
iter_order_by
#64295)1.5.0 · Source§fn lt<I>(self, other: I) -> bool
fn lt<I>(self, other: I) -> bool
Iterator
are lexicographically
less than those of another. Read more1.5.0 · Source§fn le<I>(self, other: I) -> bool
fn le<I>(self, other: I) -> bool
Iterator
are lexicographically
less or equal to those of another. Read more1.5.0 · Source§fn gt<I>(self, other: I) -> bool
fn gt<I>(self, other: I) -> bool
Iterator
are lexicographically
greater than those of another. Read more1.5.0 · Source§fn ge<I>(self, other: I) -> bool
fn ge<I>(self, other: I) -> bool
Iterator
are lexicographically
greater than or equal to those of another. Read more1.82.0 · Source§fn is_sorted(self) -> bool
fn is_sorted(self) -> bool
1.82.0 · Source§fn is_sorted_by<F>(self, compare: F) -> bool
fn is_sorted_by<F>(self, compare: F) -> bool
1.82.0 · Source§fn is_sorted_by_key<F, K>(self, f: F) -> bool
fn is_sorted_by_key<F, K>(self, f: F) -> bool
Source§impl<T, A: Allocator> SourceIter for IntoIter<T, A>
impl<T, A: Allocator> SourceIter for IntoIter<T, A>
Source§impl<T, A: Allocator> SpecExtend<T, IntoIter<T>> for Vec<T, A>
impl<T, A: Allocator> SpecExtend<T, IntoIter<T>> for Vec<T, A>
fn spec_extend(&mut self, iterator: IntoIter<T>)
Source§impl<T, A: Allocator> SpecExtend<T, IntoIter<T>> for VecDeque<T, A>
impl<T, A: Allocator> SpecExtend<T, IntoIter<T>> for VecDeque<T, A>
fn spec_extend(&mut self, iterator: IntoIter<T>)
Source§impl<T> SpecFromIter<T, IntoIter<T>> for Vec<T>
impl<T> SpecFromIter<T, IntoIter<T>> for Vec<T>
Source§impl<T> SpecFromIter<T, IntoIter<T>> for VecDeque<T>
impl<T> SpecFromIter<T, IntoIter<T>> for VecDeque<T>
fn spec_from_iter(iterator: IntoIter<T>) -> Self
Source§impl<T, A: Allocator> TrustedRandomAccessNoCoerce for IntoIter<T, A>where
T: NonDrop,
impl<T, A: Allocator> TrustedRandomAccessNoCoerce for IntoIter<T, A>where
T: NonDrop,
Source§const MAY_HAVE_SIDE_EFFECT: bool = false
const MAY_HAVE_SIDE_EFFECT: bool = false
trusted_random_access
)true
if getting an iterator element may have side effects.
Remember to take inner iterators into account.impl<T, A: Allocator> FusedIterator for IntoIter<T, A>
impl<T: Send, A: Allocator + Send> Send for IntoIter<T, A>
impl<T: Sync, A: Allocator + Sync> Sync for IntoIter<T, A>
impl<T, A: Allocator> TrustedFused for IntoIter<T, A>
impl<T, A: Allocator> TrustedLen for IntoIter<T, A>
Auto Trait Implementations§
impl<T, A> Freeze for IntoIter<T, A>where
A: Freeze,
impl<T, A> RefUnwindSafe for IntoIter<T, A>where
T: RefUnwindSafe,
A: RefUnwindSafe,
impl<T, A> Unpin for IntoIter<T, A>
impl<T, A> UnwindSafe for IntoIter<T, A>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<I> IntoIterator for Iwhere
I: Iterator,
impl<I> IntoIterator for Iwhere
I: Iterator,
Source§impl<T> SizedTypeProperties for T
impl<T> SizedTypeProperties for T
Source§#[doc(hidden)] const IS_ZST: bool = _
#[doc(hidden)] const IS_ZST: bool = _
sized_type_properties
)Source§#[doc(hidden)] const LAYOUT: Layout = _
#[doc(hidden)] const LAYOUT: Layout = _
sized_type_properties
)Source§#[doc(hidden)] const MAX_SLICE_LEN: usize = _
#[doc(hidden)] const MAX_SLICE_LEN: usize = _
sized_type_properties
)[Self]
. Read more