Trait IntoIterator

1.0.0 · Source
pub trait IntoIterator {
    type Item;
    type IntoIter: Iterator<Item = Self::Item>;

    // Required method
    fn into_iter(self) -> Self::IntoIter;
}
Expand description

Conversion into an Iterator.

By implementing IntoIterator for a type, you define how it will be converted to an iterator. This is common for types which describe a collection of some kind.

One benefit of implementing IntoIterator is that your type will work with Rust’s for loop syntax.

See also: FromIterator.

§Examples

Basic usage:

let v = [1, 2, 3];
let mut iter = v.into_iter();

assert_eq!(Some(1), iter.next());
assert_eq!(Some(2), iter.next());
assert_eq!(Some(3), iter.next());
assert_eq!(None, iter.next());

Implementing IntoIterator for your type:

// A sample collection, that's just a wrapper over Vec<T>
#[derive(Debug)]
struct MyCollection(Vec<i32>);

// Let's give it some methods so we can create one and add things
// to it.
impl MyCollection {
    fn new() -> MyCollection {
        MyCollection(Vec::new())
    }

    fn add(&mut self, elem: i32) {
        self.0.push(elem);
    }
}

// and we'll implement IntoIterator
impl IntoIterator for MyCollection {
    type Item = i32;
    type IntoIter = std::vec::IntoIter<Self::Item>;

    fn into_iter(self) -> Self::IntoIter {
        self.0.into_iter()
    }
}

// Now we can make a new collection...
let mut c = MyCollection::new();

// ... add some stuff to it ...
c.add(0);
c.add(1);
c.add(2);

// ... and then turn it into an Iterator:
for (i, n) in c.into_iter().enumerate() {
    assert_eq!(i as i32, n);
}

It is common to use IntoIterator as a trait bound. This allows the input collection type to change, so long as it is still an iterator. Additional bounds can be specified by restricting on Item:

fn collect_as_strings<T>(collection: T) -> Vec<String>
where
    T: IntoIterator,
    T::Item: std::fmt::Debug,
{
    collection
        .into_iter()
        .map(|item| format!("{item:?}"))
        .collect()
}

Required Associated Types§

1.0.0 · Source

type Item

The type of the elements being iterated over.

1.0.0 · Source

type IntoIter: Iterator<Item = Self::Item>

Which kind of iterator are we turning this into?

Required Methods§

1.0.0 · Source

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value.

See the module-level documentation for more.

§Examples
let v = [1, 2, 3];
let mut iter = v.into_iter();

assert_eq!(Some(1), iter.next());
assert_eq!(Some(2), iter.next());
assert_eq!(Some(3), iter.next());
assert_eq!(None, iter.next());

Implementors§

Source§

impl IntoIterator for &BoundedRegSpan

Source§

impl IntoIterator for Fields

1.29.0 · Source§

impl IntoIterator for proc_macro::TokenStream

Source§

impl IntoIterator for proc_macro2::TokenStream

Source§

impl IntoIterator for regex::regexset::bytes::SetMatches

Source§

impl IntoIterator for regex::regexset::string::SetMatches

Source§

impl IntoIterator for CreateFlags

Source§

impl IntoIterator for ReadFlags

Source§

impl IntoIterator for WatchFlags

Source§

impl IntoIterator for Access

Source§

impl IntoIterator for AtFlags

Source§

impl IntoIterator for FallocateFlags

Source§

impl IntoIterator for MemfdFlags

Source§

impl IntoIterator for Mode

Source§

impl IntoIterator for OFlags

Source§

impl IntoIterator for RenameFlags

Source§

impl IntoIterator for ResolveFlags

Source§

impl IntoIterator for SealFlags

Source§

impl IntoIterator for StatVfsMountFlags

Source§

impl IntoIterator for DupFlags

Source§

impl IntoIterator for FdFlags

Source§

impl IntoIterator for ReadWriteFlags

Source§

impl IntoIterator for IFlags

Source§

impl IntoIterator for StatxAttributes

Source§

impl IntoIterator for StatxFlags

Source§

impl IntoIterator for XattrFlags

Source§

impl IntoIterator for SerializedSignature

Source§

impl IntoIterator for serde_json::map::Map<String, Value>

Source§

impl IntoIterator for Error

Source§

type Item = Error

Source§

type IntoIter = IntoIter

Source§

impl IntoIterator for toml::map::Map<String, Value>

Source§

impl IntoIterator for Array

Source§

impl IntoIterator for ArrayOfTables

Source§

impl IntoIterator for InlineTable

Source§

impl IntoIterator for Table

Source§

impl IntoIterator for WalkDir

Source§

impl IntoIterator for BoundedRegSpan

Source§

impl IntoIterator for ManifestResourceConstraints

Source§

impl<'a> IntoIterator for &'a Utf8Sequence

Source§

impl<'a> IntoIterator for &'a Fields

1.10.0 · Source§

impl<'a> IntoIterator for &'a UnixListener

1.6.0 · Source§

impl<'a> IntoIterator for &'a Path

1.6.0 · Source§

impl<'a> IntoIterator for &'a PathBuf

Source§

impl<'a> IntoIterator for &'a regex::regexset::bytes::SetMatches

Source§

impl<'a> IntoIterator for &'a regex::regexset::string::SetMatches

Source§

impl<'a> IntoIterator for &'a SerializedSignature

Source§

type IntoIter = Iter<'a, u8>

Source§

type Item = &'a u8

Source§

impl<'a> IntoIterator for &'a serde_json::map::Map<String, Value>

Source§

type Item = (&'a String, &'a Value)

Source§

type IntoIter = Iter<'a>

Source§

impl<'a> IntoIterator for &'a Error

Source§

type Item = Error

Source§

type IntoIter = Iter<'a>

Source§

impl<'a> IntoIterator for &'a toml::map::Map<String, Value>

Source§

type Item = (&'a String, &'a Value)

Source§

type IntoIter = Iter<'a>

Source§

impl<'a> IntoIterator for &'a InstrSequence

Source§

impl<'a> IntoIterator for &'a mut Fields

Source§

type Item = &'a mut Field

Source§

type IntoIter = IterMut<'a, Field>

Source§

impl<'a> IntoIterator for &'a mut serde_json::map::Map<String, Value>

Source§

type Item = (&'a String, &'a mut Value)

Source§

type IntoIter = IterMut<'a>

Source§

impl<'a> IntoIterator for &'a mut toml::map::Map<String, Value>

Source§

type Item = (&'a String, &'a mut Value)

Source§

type IntoIter = IterMut<'a>

Source§

impl<'a> IntoIterator for &'a mut InstrSequence

Source§

impl<'a> IntoIterator for wasmparser_nostd::readers::core::code::LocalsReader<'a>

Source§

impl<'a> IntoIterator for wasmparser_nostd::readers::core::operators::OperatorsReader<'a>

Source§

impl<'a> IntoIterator for wasmparser::readers::core::code::LocalsReader<'a>

Source§

impl<'a> IntoIterator for wasmparser::readers::core::operators::OperatorsReader<'a>

Source§

impl<'a, A> IntoIterator for &'a SmallVec<A>
where A: Array,

Source§

type IntoIter = Iter<'a, <A as Array>::Item>

Source§

type Item = &'a <A as Array>::Item

Source§

impl<'a, A> IntoIterator for &'a mut SmallVec<A>
where A: Array,

Source§

type IntoIter = IterMut<'a, <A as Array>::Item>

Source§

type Item = &'a mut <A as Array>::Item

Source§

impl<'a, I> IntoIterator for &'a IntoChunks<I>
where I: Iterator, <I as Iterator>::Item: 'a,

Source§

type Item = Chunk<'a, I>

Source§

type IntoIter = Chunks<'a, I>

Source§

impl<'a, I> IntoIterator for &'a RcIter<I>
where I: Iterator,

Return an iterator from &RcIter<I> (by simply cloning it).

1.80.0 · Source§

impl<'a, I, A> IntoIterator for &'a Box<[I], A>
where A: Allocator,

1.80.0 · Source§

impl<'a, I, A> IntoIterator for &'a mut Box<[I], A>
where A: Allocator,

Source§

impl<'a, Idx, T> IntoIterator for &'a DedupArena<Idx, T>
where Idx: ArenaIndex,

Source§

type Item = (Idx, &'a T)

Source§

type IntoIter = Iter<'a, Idx, T>

Source§

impl<'a, Idx, T> IntoIterator for &'a Arena<Idx, T>
where Idx: ArenaIndex,

Source§

type Item = (Idx, &'a T)

Source§

type IntoIter = Iter<'a, Idx, T>

Source§

impl<'a, Idx, T> IntoIterator for &'a mut DedupArena<Idx, T>
where Idx: ArenaIndex,

Source§

type Item = (Idx, &'a mut T)

Source§

type IntoIter = IterMut<'a, Idx, T>

Source§

impl<'a, Idx, T> IntoIterator for &'a mut Arena<Idx, T>
where Idx: ArenaIndex,

Source§

type Item = (Idx, &'a mut T)

Source§

type IntoIter = IterMut<'a, Idx, T>

Source§

impl<'a, K, I, F> IntoIterator for &'a GroupBy<K, I, F>
where I: Iterator, <I as Iterator>::Item: 'a, F: FnMut(&<I as Iterator>::Item) -> K, K: PartialEq,

Source§

type Item = (K, Group<'a, K, I, F>)

Source§

type IntoIter = Groups<'a, K, I, F>

Source§

impl<'a, K, V> IntoIterator for &'a indexmap_nostd::map::IndexMap<K, V>

Source§

type Item = (&'a K, &'a V)

Source§

type IntoIter = Iter<'a, K, V>

Source§

impl<'a, K, V> IntoIterator for &'a wasmi_collections::map::Map<K, V>

Source§

type Item = (&'a K, &'a V)

Source§

type IntoIter = Iter<'a, K, V>

Source§

impl<'a, K, V> IntoIterator for &'a scrypto_test::prelude::indexmap::map::Slice<K, V>

Source§

type IntoIter = Iter<'a, K, V>

Source§

type Item = (&'a K, &'a V)

Source§

impl<'a, K, V> IntoIterator for &'a mut indexmap_nostd::map::IndexMap<K, V>

Source§

impl<'a, K, V> IntoIterator for &'a mut wasmi_collections::map::Map<K, V>
where K: 'a, V: 'a,

Source§

impl<'a, K, V> IntoIterator for &'a mut scrypto_test::prelude::indexmap::map::Slice<K, V>

1.0.0 · Source§

impl<'a, K, V, A> IntoIterator for &'a BTreeMap<K, V, A>
where A: Allocator + Clone,

Source§

type Item = (&'a K, &'a V)

Source§

type IntoIter = Iter<'a, K, V>

1.0.0 · Source§

impl<'a, K, V, A> IntoIterator for &'a mut BTreeMap<K, V, A>
where A: Allocator + Clone,

1.0.0 · Source§

impl<'a, K, V, S> IntoIterator for &'a scrypto_test::prelude::hash_map::ext_HashMap<K, V, S>

Source§

type Item = (&'a K, &'a V)

Source§

type IntoIter = Iter<'a, K, V>

Source§

impl<'a, K, V, S> IntoIterator for &'a indexmap::map::IndexMap<K, V, S>

Source§

type Item = (&'a K, &'a V)

Source§

type IntoIter = Iter<'a, K, V>

Source§

impl<'a, K, V, S> IntoIterator for &'a Cache<K, V, S>
where K: Hash + Eq + Send + Sync + 'static, V: Clone + Send + Sync + 'static, S: BuildHasher + Clone + Send + Sync + 'static,

Source§

type Item = (Arc<K>, V)

Source§

type IntoIter = Iter<'a, K, V>

Source§

impl<'a, K, V, S> IntoIterator for &'a SegmentedCache<K, V, S>
where K: Hash + Eq + Send + Sync + 'static, V: Clone + Send + Sync + 'static, S: BuildHasher + Clone + Send + Sync + 'static,

Source§

type Item = (Arc<K>, V)

Source§

type IntoIter = Iter<'a, K, V>

Source§

impl<'a, K, V, S> IntoIterator for &'a scrypto_test::prelude::indexmap::IndexMap<K, V, S>

Source§

type Item = (&'a K, &'a V)

Source§

type IntoIter = Iter<'a, K, V>

1.0.0 · Source§

impl<'a, K, V, S> IntoIterator for &'a mut scrypto_test::prelude::hash_map::ext_HashMap<K, V, S>

Source§

impl<'a, K, V, S> IntoIterator for &'a mut indexmap::map::IndexMap<K, V, S>

Source§

impl<'a, K, V, S> IntoIterator for &'a mut scrypto_test::prelude::indexmap::IndexMap<K, V, S>

Source§

impl<'a, K, V, S, A> IntoIterator for &'a hashbrown::map::HashMap<K, V, S, A>
where A: Allocator + Clone,

Source§

type Item = (&'a K, &'a V)

Source§

type IntoIter = Iter<'a, K, V>

Source§

impl<'a, K, V, S, A> IntoIterator for &'a hashbrown::map::HashMap<K, V, S, A>
where A: Allocator,

Source§

type Item = (&'a K, &'a V)

Source§

type IntoIter = Iter<'a, K, V>

Source§

impl<'a, K, V, S, A> IntoIterator for &'a mut hashbrown::map::HashMap<K, V, S, A>
where A: Allocator + Clone,

Source§

impl<'a, K, V, S, A> IntoIterator for &'a mut hashbrown::map::HashMap<K, V, S, A>
where A: Allocator,

1.4.0 · Source§

impl<'a, T> IntoIterator for &'a Option<T>

1.0.0 · Source§

impl<'a, T> IntoIterator for &'a [T]

Source§

impl<'a, T> IntoIterator for &'a crossbeam_channel::channel::Receiver<T>

Source§

type Item = T

Source§

type IntoIter = Iter<'a, T>

Source§

impl<'a, T> IntoIterator for &'a CxxVector<T>
where T: VectorElement,

Source§

impl<'a, T> IntoIterator for &'a indexmap_nostd::set::IndexSet<T>

Source§

impl<'a, T> IntoIterator for &'a MultiStash<T>

Source§

impl<'a, T> IntoIterator for &'a Set<T>

Source§

impl<'a, T> IntoIterator for &'a scrypto_test::prelude::indexmap::set::Slice<T>

Source§

impl<'a, T> IntoIterator for &'a scrypto_test::prelude::rust::sync::mpmc::Receiver<T>

Source§

type Item = T

Source§

type IntoIter = Iter<'a, T>

1.1.0 · Source§

impl<'a, T> IntoIterator for &'a scrypto_test::prelude::rust::sync::mpsc::Receiver<T>

Source§

type Item = T

Source§

type IntoIter = Iter<'a, T>

1.4.0 · Source§

impl<'a, T> IntoIterator for &'a mut Option<T>

1.0.0 · Source§

impl<'a, T> IntoIterator for &'a mut [T]

Source§

impl<'a, T> IntoIterator for &'a mut MultiStash<T>

Source§

impl<'a, T> IntoIterator for Pin<&'a mut CxxVector<T>>
where T: VectorElement,

Source§

impl<'a, T> IntoIterator for wasmparser_nostd::readers::SectionLimited<'a, T>
where T: FromReader<'a>,

Source§

impl<'a, T> IntoIterator for wasmparser::readers::SectionLimited<'a, T>
where T: FromReader<'a>,

1.0.0 · Source§

impl<'a, T, A> IntoIterator for &'a BinaryHeap<T, A>
where A: Allocator,

Source§

impl<'a, T, A> IntoIterator for &'a HashTable<T, A>
where A: Allocator,

1.0.0 · Source§

impl<'a, T, A> IntoIterator for &'a BTreeSet<T, A>
where A: Allocator + Clone,

1.0.0 · Source§

impl<'a, T, A> IntoIterator for &'a LinkedList<T, A>
where A: Allocator,

1.0.0 · Source§

impl<'a, T, A> IntoIterator for &'a Vec<T, A>
where A: Allocator,

1.0.0 · Source§

impl<'a, T, A> IntoIterator for &'a VecDeque<T, A>
where A: Allocator,

Source§

impl<'a, T, A> IntoIterator for &'a mut HashTable<T, A>
where A: Allocator,

1.0.0 · Source§

impl<'a, T, A> IntoIterator for &'a mut LinkedList<T, A>
where A: Allocator,

1.0.0 · Source§

impl<'a, T, A> IntoIterator for &'a mut Vec<T, A>
where A: Allocator,

1.0.0 · Source§

impl<'a, T, A> IntoIterator for &'a mut VecDeque<T, A>
where A: Allocator,

1.4.0 · Source§

impl<'a, T, E> IntoIterator for &'a Result<T, E>

1.4.0 · Source§

impl<'a, T, E> IntoIterator for &'a mut Result<T, E>

Source§

impl<'a, T, N> IntoIterator for &'a GenericArray<T, N>
where T: 'a, N: ArrayLength<T>,

Source§

impl<'a, T, N> IntoIterator for &'a mut GenericArray<T, N>
where T: 'a, N: ArrayLength<T>,

Source§

impl<'a, T, P> IntoIterator for &'a Punctuated<T, P>

Source§

impl<'a, T, P> IntoIterator for &'a mut Punctuated<T, P>

1.0.0 · Source§

impl<'a, T, S> IntoIterator for &'a scrypto_test::prelude::hash_set::ext_HashSet<T, S>

Source§

impl<'a, T, S> IntoIterator for &'a indexmap::set::IndexSet<T, S>

Source§

impl<'a, T, S> IntoIterator for &'a scrypto_test::prelude::indexmap::IndexSet<T, S>

Source§

impl<'a, T, S, A> IntoIterator for &'a hashbrown::set::HashSet<T, S, A>
where A: Allocator + Clone,

Source§

impl<'a, T, S, A> IntoIterator for &'a hashbrown::set::HashSet<T, S, A>
where A: Allocator,

Source§

impl<'a, T, const CAP: usize> IntoIterator for &'a ArrayVec<T, CAP>
where T: 'a,

Iterate the ArrayVec with references to each element.

use arrayvec::ArrayVec;

let array = ArrayVec::from([1, 2, 3]);

for elt in &array {
    // ...
}
Source§

impl<'a, T, const CAP: usize> IntoIterator for &'a mut ArrayVec<T, CAP>
where T: 'a,

Iterate the ArrayVec with mutable references to each element.

use arrayvec::ArrayVec;

let mut array = ArrayVec::from([1, 2, 3]);

for elt in &mut array {
    // ...
}
1.0.0 · Source§

impl<'a, T, const N: usize> IntoIterator for &'a [T; N]

1.0.0 · Source§

impl<'a, T, const N: usize> IntoIterator for &'a mut [T; N]

Source§

impl<'s> IntoIterator for &'s Array

Source§

type Item = &'s Value

Source§

type IntoIter = Box<dyn Iterator<Item = &'s Value> + 's>

Source§

impl<'s> IntoIterator for &'s ArrayOfTables

Source§

type Item = &'s Table

Source§

type IntoIter = Box<dyn Iterator<Item = &'s Table> + 's>

Source§

impl<'s> IntoIterator for &'s InlineTable

Source§

type Item = (&'s str, &'s Value)

Source§

type IntoIter = Box<dyn Iterator<Item = (&'s str, &'s Value)> + 's>

Source§

impl<'s> IntoIterator for &'s Table

Source§

type Item = (&'s str, &'s Item)

Source§

type IntoIter = Box<dyn Iterator<Item = (&'s str, &'s Item)> + 's>

Source§

impl<A> IntoIterator for Range<A>
where A: Step,

Source§

impl<A> IntoIterator for RangeFrom<A>
where A: Step,

Source§

impl<A> IntoIterator for RangeInclusive<A>
where A: Step,

Source§

impl<A> IntoIterator for SmallVec<A>
where A: Array,

1.0.0 · Source§

impl<I> IntoIterator for I
where I: Iterator,

1.80.0 · Source§

impl<I, A> IntoIterator for Box<[I], A>
where A: Allocator,

Source§

impl<K, V> IntoIterator for indexmap_nostd::map::IndexMap<K, V>

Source§

impl<K, V> IntoIterator for wasmi_collections::map::Map<K, V>

Source§

impl<K, V> IntoIterator for Box<Slice<K, V>>

1.0.0 · Source§

impl<K, V, A> IntoIterator for BTreeMap<K, V, A>
where A: Allocator + Clone,

1.0.0 · Source§

impl<K, V, S> IntoIterator for scrypto_test::prelude::hash_map::ext_HashMap<K, V, S>

Source§

impl<K, V, S> IntoIterator for indexmap::map::IndexMap<K, V, S>

Source§

impl<K, V, S> IntoIterator for scrypto_test::prelude::indexmap::IndexMap<K, V, S>

Source§

impl<K, V, S, A> IntoIterator for hashbrown::map::HashMap<K, V, S, A>
where A: Allocator + Clone,

Source§

impl<K, V, S, A> IntoIterator for hashbrown::map::HashMap<K, V, S, A>
where A: Allocator,

1.0.0 · Source§

impl<T> IntoIterator for Option<T>

Source§

impl<T> IntoIterator for crossbeam_channel::channel::Receiver<T>

Source§

impl<T> IntoIterator for indexmap_nostd::set::IndexSet<T>

Source§

impl<T> IntoIterator for MultiStash<T>

Source§

impl<T> IntoIterator for Set<T>

Source§

impl<T> IntoIterator for scrypto_test::prelude::rust::sync::mpmc::Receiver<T>

1.1.0 · Source§

impl<T> IntoIterator for scrypto_test::prelude::rust::sync::mpsc::Receiver<T>

Source§

impl<T> IntoIterator for Box<Slice<T>>

1.0.0 · Source§

impl<T, A> IntoIterator for BinaryHeap<T, A>
where A: Allocator,

Source§

impl<T, A> IntoIterator for RawTable<T, A>
where A: Allocator + Clone,

Source§

impl<T, A> IntoIterator for HashTable<T, A>
where A: Allocator,

1.0.0 · Source§

impl<T, A> IntoIterator for BTreeSet<T, A>
where A: Allocator + Clone,

1.0.0 · Source§

impl<T, A> IntoIterator for LinkedList<T, A>
where A: Allocator,

1.0.0 · Source§

impl<T, A> IntoIterator for Vec<T, A>
where A: Allocator,

1.0.0 · Source§

impl<T, A> IntoIterator for VecDeque<T, A>
where A: Allocator,

1.0.0 · Source§

impl<T, E> IntoIterator for Result<T, E>

Source§

impl<T, N> IntoIterator for GenericArray<T, N>
where N: ArrayLength<T>,

Source§

impl<T, P> IntoIterator for Punctuated<T, P>

1.0.0 · Source§

impl<T, S> IntoIterator for scrypto_test::prelude::hash_set::ext_HashSet<T, S>

Source§

impl<T, S> IntoIterator for indexmap::set::IndexSet<T, S>

Source§

impl<T, S> IntoIterator for scrypto_test::prelude::indexmap::IndexSet<T, S>

Source§

impl<T, S, A> IntoIterator for hashbrown::set::HashSet<T, S, A>
where A: Allocator + Clone,

Source§

impl<T, S, A> IntoIterator for hashbrown::set::HashSet<T, S, A>
where A: Allocator,

Source§

impl<T, const CAP: usize> IntoIterator for ArrayVec<T, CAP>

Iterate the ArrayVec with each element by value.

The vector is consumed by this operation.

use arrayvec::ArrayVec;

for elt in ArrayVec::from([1, 2, 3]) {
    // ...
}
Source§

type Item = T

Source§

type IntoIter = IntoIter<T, CAP>

1.53.0 · Source§

impl<T, const N: usize> IntoIterator for [T; N]

Source§

impl<const N: u16> IntoIterator for &FixedRegSpan<N>

Source§

impl<const N: u16> IntoIterator for FixedRegSpan<N>