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 ReadFlags
impl IntoIterator for ReadFlags
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 SealFlags
impl IntoIterator for SealFlags
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 DupFlags
impl IntoIterator for DupFlags
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
Source§impl IntoIterator for Table
impl IntoIterator for Table
Source§impl IntoIterator for Targets
impl IntoIterator for Targets
1.10.0 · Source§impl<'a> IntoIterator for &'a UnixListener
impl<'a> IntoIterator for &'a UnixListener
1.6.0 · Source§impl<'a> IntoIterator for &'a Path
impl<'a> IntoIterator for &'a Path
1.6.0 · Source§impl<'a> IntoIterator for &'a PathBuf
impl<'a> IntoIterator for &'a PathBuf
Source§impl<'a> IntoIterator for &'a Bytes
impl<'a> IntoIterator for &'a Bytes
Source§impl<'a> IntoIterator for &'a BytesMut
impl<'a> IntoIterator for &'a BytesMut
Source§impl<'a> IntoIterator for &'a Events
impl<'a> IntoIterator for &'a Events
Source§impl<'a> IntoIterator for &'a BorrowedCertRevocationList<'a>
impl<'a> IntoIterator for &'a BorrowedCertRevocationList<'a>
type Item = Result<BorrowedRevokedCert<'a>, Error>
type IntoIter = DerIterator<'a, BorrowedRevokedCert<'a>>
Source§impl<'a> IntoIterator for &'a DcSupportedVersions
impl<'a> IntoIterator for &'a DcSupportedVersions
Source§impl<'a> IntoIterator for &'a Targets
impl<'a> IntoIterator for &'a Targets
Source§impl<'a> IntoIterator for BerObject<'a>
impl<'a> IntoIterator for BerObject<'a>
Source§impl<'a> IntoIterator for DcStatelessResetTokens<'a>
impl<'a> IntoIterator for DcStatelessResetTokens<'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>
Source§impl<'a, A> IntoIterator for &'a RBTree<A>
impl<'a, A> IntoIterator for &'a RBTree<A>
Source§impl<'a, A> IntoIterator for &'a SinglyLinkedList<A>
impl<'a, A> IntoIterator for &'a SinglyLinkedList<A>
Source§impl<'a, A> IntoIterator for &'a XorLinkedList<A>
impl<'a, A> IntoIterator for &'a XorLinkedList<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 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 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.0.0 · Source§impl<'a, T> IntoIterator for &'a [T]
impl<'a, T> IntoIterator for &'a [T]
Source§impl<'a, T> IntoIterator for &'a std::sync::mpmc::Receiver<T>
impl<'a, T> IntoIterator for &'a std::sync::mpmc::Receiver<T>
1.1.0 · Source§impl<'a, T> IntoIterator for &'a std::sync::mpsc::Receiver<T>
impl<'a, T> IntoIterator for &'a std::sync::mpsc::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>
Source§impl<'a, T> IntoIterator for &'a ThreadLocal<T>
impl<'a, T> IntoIterator for &'a ThreadLocal<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 &'a mut CachedThreadLocal<T>where
T: Send + 'a,
impl<'a, T> IntoIterator for &'a mut CachedThreadLocal<T>where
T: Send + 'a,
Source§impl<'a, T> IntoIterator for &'a mut ThreadLocal<T>where
T: Send,
impl<'a, T> IntoIterator for &'a mut ThreadLocal<T>where
T: Send,
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 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 BTreeSet<T, A>
impl<'a, T, A> IntoIterator for &'a BTreeSet<T, A>
1.0.0 · Source§impl<'a, T, A> IntoIterator for &'a rocket::mtls::x509::der_parser::asn1_rs::nom::lib::std::collections::linked_list::LinkedList<T, A>where
A: Allocator,
impl<'a, T, A> IntoIterator for &'a rocket::mtls::x509::der_parser::asn1_rs::nom::lib::std::collections::linked_list::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::linked_list::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::linked_list::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 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")
}
}