Trait ibc::prelude::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§
Required Methods§
sourcefn into_iter(self) -> Self::IntoIter
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 IndexVec
impl IntoIterator for IndexVec
§impl IntoIterator for FallocateFlags
impl IntoIterator for FallocateFlags
§impl IntoIterator for MountPropagationFlags
impl IntoIterator for MountPropagationFlags
§impl IntoIterator for ReadWriteFlags
impl IntoIterator for ReadWriteFlags
§impl IntoIterator for StatVfsMountFlags
impl IntoIterator for StatVfsMountFlags
1.10.0 · source§impl<'a> IntoIterator for &'a UnixListener
impl<'a> IntoIterator for &'a UnixListener
§impl<'a, A> IntoIterator for &'a SmallVec<A>where
A: Array,
impl<'a, A> IntoIterator for &'a SmallVec<A>where A: Array,
§impl<'a, A> IntoIterator for &'a mut SmallVec<A>where
A: Array,
impl<'a, A> IntoIterator for &'a mut SmallVec<A>where A: Array,
source§impl<'a, K, V, S> IntoIterator for &'a std::collections::hash::map::HashMap<K, V, S>
impl<'a, K, V, S> IntoIterator for &'a std::collections::hash::map::HashMap<K, V, S>
source§impl<'a, K, V, S> IntoIterator for &'a mut std::collections::hash::map::HashMap<K, V, S>
impl<'a, K, V, S> IntoIterator for &'a mut std::collections::hash::map::HashMap<K, V, S>
§impl<'a, K, V, S, A> IntoIterator for &'a HashMap<K, V, S, A>where
A: Allocator + Clone,
impl<'a, K, V, S, A> IntoIterator for &'a HashMap<K, V, S, A>where A: Allocator + Clone,
§impl<'a, K, V, S, A> IntoIterator for &'a mut HashMap<K, V, S, A>where
A: Allocator + Clone,
impl<'a, K, V, S, A> IntoIterator for &'a mut HashMap<K, V, S, A>where A: Allocator + Clone,
1.4.0 · source§impl<'a, T> IntoIterator for &'a Option<T>
impl<'a, T> IntoIterator for &'a Option<T>
1.1.0 · source§impl<'a, T> IntoIterator for &'a Receiver<T>
impl<'a, T> IntoIterator for &'a Receiver<T>
1.4.0 · source§impl<'a, T> IntoIterator for &'a mut Option<T>
impl<'a, T> IntoIterator for &'a mut Option<T>
source§impl<'a, T> IntoIterator for &'a mut [T]
impl<'a, T> IntoIterator for &'a mut [T]
source§impl<'a, T, A> IntoIterator for &'a BinaryHeap<T, A>where
A: Allocator,
impl<'a, T, A> IntoIterator for &'a BinaryHeap<T, A>where A: Allocator,
source§impl<'a, T, A> IntoIterator for &'a LinkedList<T, A>where
A: Allocator,
impl<'a, T, A> IntoIterator for &'a LinkedList<T, A>where A: Allocator,
source§impl<'a, T, A> IntoIterator for &'a VecDeque<T, A>where
A: Allocator,
impl<'a, T, A> IntoIterator for &'a VecDeque<T, A>where A: Allocator,
source§impl<'a, T, A> IntoIterator for &'a Vec<T, A>where
A: Allocator,
impl<'a, T, A> IntoIterator for &'a Vec<T, A>where A: Allocator,
source§impl<'a, T, A> IntoIterator for &'a mut LinkedList<T, A>where
A: Allocator,
impl<'a, T, A> IntoIterator for &'a mut LinkedList<T, A>where A: Allocator,
source§impl<'a, T, A> IntoIterator for &'a mut VecDeque<T, A>where
A: Allocator,
impl<'a, T, A> IntoIterator for &'a mut VecDeque<T, A>where A: Allocator,
source§impl<'a, T, A> IntoIterator for &'a mut Vec<T, A>where
A: Allocator,
impl<'a, T, A> IntoIterator for &'a mut Vec<T, A>where A: Allocator,
1.4.0 · source§impl<'a, T, E> IntoIterator for &'a Result<T, E>
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>
impl<'a, T, E> IntoIterator for &'a mut Result<T, E>
§impl<'a, T, N> IntoIterator for &'a GenericArray<T, N>where
T: 'a,
N: ArrayLength<T>,
impl<'a, T, N> IntoIterator for &'a GenericArray<T, N>where T: 'a, N: ArrayLength<T>,
§impl<'a, T, N> IntoIterator for &'a mut GenericArray<T, N>where
T: 'a,
N: ArrayLength<T>,
impl<'a, T, N> IntoIterator for &'a mut GenericArray<T, N>where T: 'a, N: ArrayLength<T>,
source§impl<'a, T, S> IntoIterator for &'a std::collections::hash::set::HashSet<T, S>
impl<'a, T, S> IntoIterator for &'a std::collections::hash::set::HashSet<T, S>
§impl<'a, T, S, A> IntoIterator for &'a HashSet<T, S, A>where
A: Allocator + Clone,
impl<'a, T, S, A> IntoIterator for &'a HashSet<T, S, A>where A: Allocator + Clone,
source§impl<'a, T, const CAP: usize> IntoIterator for &'a ArrayVec<T, CAP>where
T: 'a,
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,
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 {
// ...
}source§impl<'a, T, const N: usize> IntoIterator for &'a [T; N]
impl<'a, T, const N: usize> IntoIterator for &'a [T; N]
source§impl<'a, T, const N: usize> IntoIterator for &'a mut [T; N]
impl<'a, T, const N: usize> IntoIterator for &'a mut [T; N]
§impl<A> IntoIterator for SmallVec<A>where
A: Array,
impl<A> IntoIterator for SmallVec<A>where A: Array,
const: unstable · source§impl<I> IntoIterator for Iwhere
I: Iterator,
impl<I> IntoIterator for Iwhere I: Iterator,
source§impl<K, V, S> IntoIterator for std::collections::hash::map::HashMap<K, V, S>
impl<K, V, S> IntoIterator for std::collections::hash::map::HashMap<K, V, S>
§impl<K, V, S, A> IntoIterator for HashMap<K, V, S, A>where
A: Allocator + Clone,
impl<K, V, S, A> IntoIterator for HashMap<K, V, S, A>where A: Allocator + Clone,
source§impl<T, A> IntoIterator for BinaryHeap<T, A>where
A: Allocator,
impl<T, A> IntoIterator for BinaryHeap<T, A>where A: Allocator,
source§impl<T, A> IntoIterator for LinkedList<T, A>where
A: Allocator,
impl<T, A> IntoIterator for LinkedList<T, A>where A: Allocator,
source§impl<T, A> IntoIterator for VecDeque<T, A>where
A: Allocator,
impl<T, A> IntoIterator for VecDeque<T, A>where A: Allocator,
source§impl<T, A> IntoIterator for Vec<T, A>where
A: Allocator,
impl<T, A> IntoIterator for Vec<T, A>where A: Allocator,
§impl<T, N> IntoIterator for GenericArray<T, N>where
N: ArrayLength<T>,
impl<T, N> IntoIterator for GenericArray<T, N>where N: ArrayLength<T>,
source§impl<T, S> IntoIterator for std::collections::hash::set::HashSet<T, S>
impl<T, S> IntoIterator for std::collections::hash::set::HashSet<T, S>
§impl<T, S, A> IntoIterator for HashSet<T, S, A>where
A: Allocator + Clone,
impl<T, S, A> IntoIterator for HashSet<T, S, A>where A: Allocator + Clone,
source§impl<T, const CAP: usize> IntoIterator for ArrayVec<T, CAP>
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]) {
// ...
}