pub trait IntoIterator {
type Item;
type IntoIter: Iterator<Item = Self::Item>;
// Required method
fn into_iter(self) -> Self::IntoIter;
}
mtls
only.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§
1.0.0 · 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 QMediaType
impl IntoIterator for QMediaType
type Item = QMediaType
type IntoIter = Once<QMediaType>
source§impl IntoIterator for CreateFlags
impl IntoIterator for CreateFlags
type Item = CreateFlags
type IntoIter = Iter<CreateFlags>
source§impl IntoIterator for WatchFlags
impl IntoIterator for WatchFlags
type Item = WatchFlags
type IntoIter = Iter<WatchFlags>
source§impl IntoIterator for FallocateFlags
impl IntoIterator for FallocateFlags
type Item = FallocateFlags
type IntoIter = Iter<FallocateFlags>
source§impl IntoIterator for MemfdFlags
impl IntoIterator for MemfdFlags
type Item = MemfdFlags
type IntoIter = Iter<MemfdFlags>
source§impl IntoIterator for RenameFlags
impl IntoIterator for RenameFlags
type Item = RenameFlags
type IntoIter = Iter<RenameFlags>
source§impl IntoIterator for ResolveFlags
impl IntoIterator for ResolveFlags
type Item = ResolveFlags
type IntoIter = Iter<ResolveFlags>
source§impl IntoIterator for StatVfsMountFlags
impl IntoIterator for StatVfsMountFlags
type Item = StatVfsMountFlags
type IntoIter = Iter<StatVfsMountFlags>
source§impl IntoIterator for StatxFlags
impl IntoIterator for StatxFlags
type Item = StatxFlags
type IntoIter = Iter<StatxFlags>
source§impl IntoIterator for ReadWriteFlags
impl IntoIterator for ReadWriteFlags
type Item = ReadWriteFlags
type IntoIter = Iter<ReadWriteFlags>
source§impl IntoIterator for MountFlags
impl IntoIterator for MountFlags
type Item = MountFlags
type IntoIter = Iter<MountFlags>
source§impl IntoIterator for MountPropagationFlags
impl IntoIterator for MountPropagationFlags
type Item = MountPropagationFlags
type IntoIter = Iter<MountPropagationFlags>
source§impl IntoIterator for UnmountFlags
impl IntoIterator for UnmountFlags
type Item = UnmountFlags
type IntoIter = Iter<UnmountFlags>
source§impl IntoIterator for XattrFlags
impl IntoIterator for XattrFlags
type Item = XattrFlags
type IntoIter = Iter<XattrFlags>
source§impl IntoIterator for Array
impl IntoIterator for Array
source§impl IntoIterator for ArrayOfTables
impl IntoIterator for ArrayOfTables
source§impl IntoIterator for InlineTable
impl IntoIterator for InlineTable
type Item = (InternalString, Value)
type IntoIter = Box<dyn Iterator<Item = (InternalString, Value)>>
source§impl IntoIterator for Table
impl IntoIterator for Table
type Item = (InternalString, Item)
type IntoIter = Box<dyn Iterator<Item = (InternalString, Item)>>
1.10.0 · source§impl<'a> IntoIterator for &'a UnixListener
impl<'a> IntoIterator for &'a UnixListener
source§impl<'a> IntoIterator for &'a webpki::crl::BorrowedCertRevocationList<'a>
impl<'a> IntoIterator for &'a webpki::crl::BorrowedCertRevocationList<'a>
source§impl<'a> IntoIterator for &'a webpki::crl::types::BorrowedCertRevocationList<'a>
impl<'a> IntoIterator for &'a webpki::crl::types::BorrowedCertRevocationList<'a>
type Item = Result<BorrowedRevokedCert<'a>, Error>
type IntoIter = DerIterator<'a, BorrowedRevokedCert<'a>>
source§impl<'a> IntoIterator for BerObject<'a>
impl<'a> IntoIterator for BerObject<'a>
source§impl<'a> IntoIterator for VersionNegotiation<'a, &'a [u8]>
impl<'a> IntoIterator for VersionNegotiation<'a, &'a [u8]>
source§impl<'a, 'b, T> IntoIterator for &'b GetAll<'a, T>where
'b: 'a,
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,
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,
impl<'a, 'b, T> IntoIterator for &'b mut OccupiedEntry<'a, T>where
'b: 'a,
source§impl<'a, A> IntoIterator for &'a TinyVec<A>where
A: Array,
impl<'a, A> IntoIterator for &'a TinyVec<A>where
A: Array,
source§impl<'a, A> IntoIterator for &'a intrusive_collections::linked_list::LinkedList<A>
impl<'a, A> IntoIterator for &'a intrusive_collections::linked_list::LinkedList<A>
type Item = &'a <<A as Adapter>::PointerOps as PointerOps>::Value
type IntoIter = Iter<'a, A>
source§impl<'a, A> IntoIterator for &'a RBTree<A>
impl<'a, A> IntoIterator for &'a RBTree<A>
type Item = &'a <<A as Adapter>::PointerOps as PointerOps>::Value
type IntoIter = Iter<'a, A>
source§impl<'a, A> IntoIterator for &'a SinglyLinkedList<A>
impl<'a, A> IntoIterator for &'a SinglyLinkedList<A>
type Item = &'a <<A as Adapter>::PointerOps as PointerOps>::Value
type IntoIter = Iter<'a, A>
source§impl<'a, A> IntoIterator for &'a XorLinkedList<A>
impl<'a, A> IntoIterator for &'a XorLinkedList<A>
type Item = &'a <<A as Adapter>::PointerOps as PointerOps>::Value
type IntoIter = Iter<'a, A>
source§impl<'a, A> IntoIterator for &'a SmallVec<A>where
A: Array,
impl<'a, A> IntoIterator for &'a SmallVec<A>where
A: Array,
source§impl<'a, A> IntoIterator for &'a ArrayVec<A>where
A: Array,
impl<'a, A> IntoIterator for &'a ArrayVec<A>where
A: Array,
source§impl<'a, A> IntoIterator for &'a mut TinyVec<A>where
A: Array,
impl<'a, A> IntoIterator for &'a mut TinyVec<A>where
A: Array,
source§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, A> IntoIterator for &'a mut ArrayVec<A>where
A: Array,
impl<'a, A> IntoIterator for &'a mut ArrayVec<A>where
A: Array,
source§impl<'a, Fut> IntoIterator for &'a FuturesUnordered<Fut>where
Fut: Unpin,
impl<'a, Fut> IntoIterator for &'a FuturesUnordered<Fut>where
Fut: Unpin,
source§impl<'a, Fut> IntoIterator for &'a mut FuturesUnordered<Fut>where
Fut: Unpin,
impl<'a, Fut> IntoIterator for &'a mut FuturesUnordered<Fut>where
Fut: Unpin,
source§impl<'a, K, V> IntoIterator for &'a indexmap::map::slice::Slice<K, V>
impl<'a, K, V> IntoIterator for &'a indexmap::map::slice::Slice<K, V>
source§impl<'a, K, V> IntoIterator for &'a mut indexmap::map::slice::Slice<K, V>
impl<'a, K, V> IntoIterator for &'a mut indexmap::map::slice::Slice<K, V>
1.0.0 · source§impl<'a, K, V, A> IntoIterator for &'a BTreeMap<K, V, A>
impl<'a, K, V, A> IntoIterator for &'a BTreeMap<K, V, A>
1.0.0 · source§impl<'a, K, V, A> IntoIterator for &'a mut BTreeMap<K, V, A>
impl<'a, K, V, A> IntoIterator for &'a mut BTreeMap<K, V, A>
1.0.0 · source§impl<'a, K, V, S> IntoIterator for &'a rocket::mtls::x509::der_parser::asn1_rs::nom::lib::std::collections::HashMap<K, V, S>
impl<'a, K, V, S> IntoIterator for &'a rocket::mtls::x509::der_parser::asn1_rs::nom::lib::std::collections::HashMap<K, V, S>
source§impl<'a, K, V, S> IntoIterator for &'a AHashMap<K, V, S>
impl<'a, K, V, S> IntoIterator for &'a AHashMap<K, V, S>
source§impl<'a, K, V, S> IntoIterator for &'a IndexMap<K, V, S>
impl<'a, K, V, S> IntoIterator for &'a IndexMap<K, V, S>
1.0.0 · source§impl<'a, K, V, S> IntoIterator for &'a mut rocket::mtls::x509::der_parser::asn1_rs::nom::lib::std::collections::HashMap<K, V, S>
impl<'a, K, V, S> IntoIterator for &'a mut rocket::mtls::x509::der_parser::asn1_rs::nom::lib::std::collections::HashMap<K, V, S>
source§impl<'a, K, V, S> IntoIterator for &'a mut AHashMap<K, V, S>
impl<'a, K, V, S> IntoIterator for &'a mut AHashMap<K, V, S>
source§impl<'a, K, V, S> IntoIterator for &'a mut IndexMap<K, V, S>
impl<'a, K, V, S> IntoIterator for &'a mut IndexMap<K, V, S>
source§impl<'a, K, V, S, A> IntoIterator for &'a hashbrown::map::HashMap<K, V, S, A>where
A: Allocator,
impl<'a, K, V, S, A> IntoIterator for &'a 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,
impl<'a, K, V, S, A> IntoIterator for &'a mut hashbrown::map::HashMap<K, V, S, A>where
A: Allocator,
source§impl<'a, St> IntoIterator for &'a SelectAll<St>
impl<'a, St> IntoIterator for &'a SelectAll<St>
source§impl<'a, St> IntoIterator for &'a mut SelectAll<St>
impl<'a, St> IntoIterator for &'a mut SelectAll<St>
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>
source§impl<'a, T> IntoIterator for &'a http::header::map::HeaderMap<T>
impl<'a, T> IntoIterator for &'a http::header::map::HeaderMap<T>
source§impl<'a, T> IntoIterator for &'a indexmap::set::slice::Slice<T>
impl<'a, T> IntoIterator for &'a indexmap::set::slice::Slice<T>
source§impl<'a, T> IntoIterator for &'a Slab<T>
impl<'a, T> IntoIterator for &'a Slab<T>
1.4.0 · source§impl<'a, T> IntoIterator for &'a mut Option<T>
impl<'a, T> IntoIterator for &'a mut Option<T>
1.0.0 · source§impl<'a, T> IntoIterator for &'a mut [T]
impl<'a, T> IntoIterator for &'a mut [T]
source§impl<'a, T> IntoIterator for &'a mut http::header::map::HeaderMap<T>
impl<'a, T> IntoIterator for &'a mut http::header::map::HeaderMap<T>
source§impl<'a, T> IntoIterator for &'a mut Slab<T>
impl<'a, T> IntoIterator for &'a mut Slab<T>
source§impl<'a, T> IntoIterator for GetAll<'a, T>
impl<'a, T> IntoIterator for GetAll<'a, T>
source§impl<'a, T> IntoIterator for OccupiedEntry<'a, T>
impl<'a, T> IntoIterator for OccupiedEntry<'a, T>
1.0.0 · source§impl<'a, T, A> IntoIterator for &'a BTreeSet<T, A>
impl<'a, T, A> IntoIterator for &'a BTreeSet<T, A>
1.0.0 · 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,
1.0.0 · source§impl<'a, T, A> IntoIterator for &'a rocket::mtls::x509::der_parser::asn1_rs::nom::lib::std::collections::LinkedList<T, A>where
A: Allocator,
impl<'a, T, A> IntoIterator for &'a rocket::mtls::x509::der_parser::asn1_rs::nom::lib::std::collections::LinkedList<T, A>where
A: Allocator,
1.0.0 · 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,
1.0.0 · source§impl<'a, T, A> IntoIterator for &'a rocket::mtls::x509::der_parser::asn1_rs::nom::lib::std::vec::Vec<T, A>where
A: Allocator,
impl<'a, T, A> IntoIterator for &'a rocket::mtls::x509::der_parser::asn1_rs::nom::lib::std::vec::Vec<T, A>where
A: Allocator,
source§impl<'a, T, A> IntoIterator for &'a allocator_api2::stable::vec::Vec<T, A>where
A: Allocator,
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 HashTable<T, A>where
A: Allocator,
impl<'a, T, A> IntoIterator for &'a HashTable<T, A>where
A: Allocator,
1.0.0 · source§impl<'a, T, A> IntoIterator for &'a mut rocket::mtls::x509::der_parser::asn1_rs::nom::lib::std::collections::LinkedList<T, A>where
A: Allocator,
impl<'a, T, A> IntoIterator for &'a mut rocket::mtls::x509::der_parser::asn1_rs::nom::lib::std::collections::LinkedList<T, A>where
A: Allocator,
1.0.0 · 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,
1.0.0 · source§impl<'a, T, A> IntoIterator for &'a mut rocket::mtls::x509::der_parser::asn1_rs::nom::lib::std::vec::Vec<T, A>where
A: Allocator,
impl<'a, T, A> IntoIterator for &'a mut rocket::mtls::x509::der_parser::asn1_rs::nom::lib::std::vec::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,
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 HashTable<T, A>where
A: Allocator,
impl<'a, T, A> IntoIterator for &'a mut HashTable<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>
source§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>,
source§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>,
1.0.0 · source§impl<'a, T, S> IntoIterator for &'a rocket::mtls::x509::der_parser::asn1_rs::nom::lib::std::collections::HashSet<T, S>
impl<'a, T, S> IntoIterator for &'a rocket::mtls::x509::der_parser::asn1_rs::nom::lib::std::collections::HashSet<T, S>
source§impl<'a, T, S> IntoIterator for &'a AHashSet<T, S>
impl<'a, T, S> IntoIterator for &'a AHashSet<T, S>
source§impl<'a, T, S> IntoIterator for &'a IndexSet<T, S>
impl<'a, T, S> IntoIterator for &'a IndexSet<T, S>
source§impl<'a, T, S, A> IntoIterator for &'a hashbrown::set::HashSet<T, S, A>where
A: Allocator,
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]
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]
impl<'a, T, const N: usize> IntoIterator for &'a mut [T; N]
§impl<'h> IntoIterator for rocket::http::HeaderMap<'h>
impl<'h> IntoIterator for rocket::http::HeaderMap<'h>
Consumes self
and returns an iterator over all of the Header
s stored
in the map. Header names are returned in no specific order, but all
values for a given header name are grouped together, and values are in
FIFO order.
§Example
use rocket::http::{HeaderMap, Header};
// The headers we'll be storing.
let all_headers = vec![
Header::new("X-Custom", "value_0"),
Header::new("X-Custom", "value_1"),
Header::new("X-Other", "other"),
Header::new("X-Third", "third"),
];
// Create a map, store all of the headers.
let mut map = HeaderMap::new();
for header in all_headers {
map.add(header)
}
// Ensure there are three headers via the iterator.
assert_eq!(map.iter().count(), 4);
// Actually iterate through them.
let mut custom = 0;
for header in map.into_iter() {
match header.name().as_str() {
"X-Other" => assert_eq!(header.value(), "other"),
"X-Third" => assert_eq!(header.value(), "third"),
"X-Custom" => {
assert_eq!(header.value(), format!("value_{custom}"));
custom += 1;
},
_ => unreachable!("there are only three uniquely named headers")
}
}