IntoIterator

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 &FieldSet

Source§

impl IntoIterator for datex_core::values::core_values::map::Map

Source§

impl IntoIterator for IndexVec

Source§

impl IntoIterator for Yaml

Source§

impl IntoIterator for List

Source§

impl IntoIterator for Bytes

Source§

impl IntoIterator for BytesMut

Source§

impl IntoIterator for Value

Source§

type Item = Subtag

Source§

type IntoIter = ShortBoxSliceIntoIter<Subtag>

Source§

impl IntoIterator for Dir

Source§

impl IntoIterator for CipherCtxFlags

Source§

impl IntoIterator for CMSOptions

Source§

impl IntoIterator for OcspFlag

Source§

impl IntoIterator for Pkcs7Flags

Source§

impl IntoIterator for ExtensionContext

Source§

impl IntoIterator for ShutdownState

Source§

impl IntoIterator for SslMode

Source§

impl IntoIterator for SslOptions

Source§

impl IntoIterator for SslSessionCacheMode

Source§

impl IntoIterator for SslVerifyMode

Source§

impl IntoIterator for X509CheckFlags

Source§

impl IntoIterator for X509VerifyFlags

Source§

impl IntoIterator for Dictionary

Source§

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

Source§

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

Source§

impl IntoIterator for NackPair

Create an iterator over all the packet sequence numbers expressed by this NACK pair.

Source§

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

Source§

impl IntoIterator for WalkDir

Source§

impl<'a> IntoIterator for &'a datex_core::values::core_values::map::Map

Source§

impl<'a> IntoIterator for &'a Utf8Sequence

Source§

impl<'a> IntoIterator for &'a List

1.10.0 · Source§

impl<'a> IntoIterator for &'a UnixListener

1.6.0 · Source§

impl<'a> IntoIterator for &'a std::path::Path

1.6.0 · Source§

impl<'a> IntoIterator for &'a PathBuf

Source§

impl<'a> IntoIterator for &'a RawPathParams

Source§

impl<'a> IntoIterator for &'a Bytes

Source§

type Item = &'a u8

Source§

type IntoIter = Iter<'a, u8>

Source§

impl<'a> IntoIterator for &'a BytesMut

Source§

type Item = &'a u8

Source§

type IntoIter = Iter<'a, u8>

Source§

impl<'a> IntoIterator for &'a Events

Source§

impl<'a> IntoIterator for &'a Interfaces

Source§

impl<'a> IntoIterator for &'a SigSet

Source§

impl<'a> IntoIterator for &'a Dictionary

Source§

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

Source§

type IntoIter = Iter<'a>

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 BorrowedCertRevocationList<'a>

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 serde_path_to_error::path::Path

Source§

impl<'a> IntoIterator for &'a mut datex_core::values::core_values::map::Map

Source§

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

Source§

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

Source§

type IntoIter = IterMut<'a>

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 BerObject<'a>

Source§

impl<'a, 'b, T> IntoIterator for &'b GetAll<'a, T>
where 'b: 'a,

Source§

impl<'a, 'b, T> IntoIterator for &'b OccupiedEntry<'a, T>
where 'b: 'a,

Source§

impl<'a, 'b, T> IntoIterator for &'b mut OccupiedEntry<'a, T>
where 'b: '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, B> IntoIterator for &'a BitSet<B>
where B: BitBlock,

Source§

impl<'a, B> IntoIterator for &'a BitVec<B>
where B: BitBlock,

Source§

impl<'a, Fut> IntoIterator for &'a FuturesUnordered<Fut>
where Fut: Unpin,

Source§

impl<'a, Fut> IntoIterator for &'a mut FuturesUnordered<Fut>
where Fut: Unpin,

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>

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, K, I, F> IntoIterator for &'a ChunkBy<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::map::slice::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 ringmap::map::slice::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::map::slice::Slice<K, V>

Source§

impl<'a, K, V> IntoIterator for &'a mut ringmap::map::slice::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 std::collections::hash::map::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<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 LinkedHashMap<K, V, S>
where K: Hash + Eq, S: BuildHasher,

Source§

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

Source§

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

Source§

impl<'a, K, V, S> IntoIterator for &'a LiteMap<K, V, S>
where S: StoreIterable<'a, K, V>,

Source§

impl<'a, K, V, S> IntoIterator for &'a RingMap<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 std::collections::hash::map::HashMap<K, V, S>

Source§

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

Source§

impl<'a, K, V, S> IntoIterator for &'a mut LinkedHashMap<K, V, S>
where K: Hash + Eq, S: BuildHasher,

Source§

impl<'a, K, V, S> IntoIterator for &'a mut LiteMap<K, V, S>
where S: StoreIterableMut<'a, K, V>,

Source§

impl<'a, K, V, S> IntoIterator for &'a mut RingMap<K, V, S>

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 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,

Source§

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

Source§

impl<'a, K: NextKey, T> IntoIterator for &'a FreeHashMap<K, T>

Source§

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

Source§

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

Source§

impl<'a, K: NextKey, T> IntoIterator for &'a mut FreeHashMap<K, T>

Source§

impl<'a, St> IntoIterator for &'a SelectAll<St>
where St: Stream + Unpin,

Source§

impl<'a, St> IntoIterator for &'a mut SelectAll<St>
where St: Stream + Unpin,

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 std::sync::mpmc::Receiver<T>

Source§

type Item = T

Source§

type IntoIter = Iter<'a, T>

1.1.0 · Source§

impl<'a, T> IntoIterator for &'a std::sync::mpsc::Receiver<T>

Source§

type Item = T

Source§

type IntoIter = Iter<'a, T>

Source§

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

Source§

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

Source§

impl<'a, T> IntoIterator for &'a Stack<T>
where T: Stackable,

Source§

type Item = &'a <T as ForeignType>::Ref

Source§

type IntoIter = Iter<'a, T>

Source§

impl<'a, T> IntoIterator for &'a StackRef<T>
where T: Stackable,

Source§

type Item = &'a <T as ForeignType>::Ref

Source§

type IntoIter = Iter<'a, T>

Source§

impl<'a, T> IntoIterator for &'a ringmap::set::slice::Slice<T>

Source§

impl<'a, T> IntoIterator for &'a Slab<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 HeaderMap<T>

Source§

impl<'a, T> IntoIterator for &'a mut Stack<T>
where T: Stackable,

Source§

type Item = &'a mut <T as ForeignType>::Ref

Source§

type IntoIter = IterMut<'a, T>

Source§

impl<'a, T> IntoIterator for &'a mut StackRef<T>
where T: Stackable,

Source§

type Item = &'a mut <T as ForeignType>::Ref

Source§

type IntoIter = IterMut<'a, T>

Source§

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

Source§

impl<'a, T> IntoIterator for GetAll<'a, T>

Source§

impl<'a, T> IntoIterator for OccupiedEntry<'a, T>

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 BinaryHeap<T, A>
where A: Allocator,

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 VecDeque<T, A>
where A: Allocator,

1.0.0 · Source§

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

Source§

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

Source§

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

Source§

impl<'a, T, A> IntoIterator for &'a hashbrown::table::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 VecDeque<T, A>
where A: Allocator,

1.0.0 · Source§

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

Source§

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

Source§

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

Source§

impl<'a, T, A> IntoIterator for &'a mut hashbrown::table::HashTable<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>,

1.0.0 · Source§

impl<'a, T, S> IntoIterator for &'a std::collections::hash::set::HashSet<T, S>

Source§

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

Source§

impl<'a, T, S> IntoIterator for &'a RingSet<T, S>

Source§

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

Source§

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

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<'inp, 'out, T> IntoIterator for InOutBuf<'inp, 'out, T>

Source§

type Item = InOut<'inp, 'out, T>

Source§

type IntoIter = InOutBufIter<'inp, 'out, T>

Source§

impl<'src> IntoIterator for &'src Graphemes

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,

Source§

impl<B> IntoIterator for BitVec<B>
where B: BitBlock,

Source§

impl<Fut> IntoIterator for FuturesUnordered<Fut>
where Fut: Unpin,

Source§

type Item = Fut

Source§

type IntoIter = IntoIter<Fut>

Source§

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

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

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 Box<Slice<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 std::collections::hash::map::HashMap<K, V, S>

Source§

impl<K, V, S> IntoIterator for IndexMap<K, V, S>

Source§

impl<K, V, S> IntoIterator for LinkedHashMap<K, V, S>
where K: Hash + Eq, S: BuildHasher,

Source§

impl<K, V, S> IntoIterator for LiteMap<K, V, S>
where S: StoreIntoIterator<K, V>,

Source§

impl<K, V, S> IntoIterator for RingMap<K, V, S>

Source§

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

Source§

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

Source§

impl<K: NextKey, T> IntoIterator for FreeHashMap<K, T>

Source§

impl<St> IntoIterator for SelectAll<St>
where St: Stream + Unpin,

1.0.0 · Source§

impl<T> IntoIterator for Option<T>

Source§

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

Source§

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

Source§

impl<T> IntoIterator for std::sync::mpmc::Receiver<T>

1.1.0 · Source§

impl<T> IntoIterator for std::sync::mpsc::Receiver<T>

Source§

impl<T> IntoIterator for HeaderMap<T>

Source§

impl<T> IntoIterator for Stack<T>
where T: Stackable,

Source§

impl<T> IntoIterator for Slab<T>

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 BinaryHeap<T, A>
where A: Allocator,

1.0.0 · Source§

impl<T, A> IntoIterator for LinkedList<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, A> IntoIterator for datex_core::without_std::prelude::Vec<T, A>
where A: Allocator,

Source§

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

Source§

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

Source§

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

Source§

impl<T, C> IntoIterator for SimpleSpan<T, C>
where Range<T>: Iterator<Item = T>,

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>,

1.0.0 · Source§

impl<T, S> IntoIterator for std::collections::hash::set::HashSet<T, S>

Source§

impl<T, S> IntoIterator for IndexSet<T, S>

Source§

impl<T, S> IntoIterator for RingSet<T, S>

Source§

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

Source§

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

Source§

impl<T, U> IntoIterator for Chain<T, U>
where T: Buf, U: Buf,

1.53.0 · Source§

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

Source§

impl<T, const N: usize> IntoIterator for NichedOption<T, N>