ref_iter/traits/
into_ref_kv_iterator.rs

1//! Provider of [`IntoRefKvIterator`].
2
3use crate::prelude::*;
4
5/// Conversion into an [`RefKvIterator`].
6pub trait IntoRefKvIterator {
7    /// The key type of the elements being iterated over.
8    type K: ?Sized;
9
10    /// The value type of the elements being iterated over.
11    type V: ?Sized;
12
13    /// Which kind of iterator are we turning this into?
14    type IntoRefKvIter: RefKvIterator<K = Self::K, V = Self::V>;
15
16    /// Creates an iterator from a value.
17    fn into_ref_kv_iter(self) -> Self::IntoRefKvIter;
18}
19
20impl<T: RefKvIterator> IntoRefKvIterator for T {
21    type K = T::K;
22    type V = T::V;
23    type IntoRefKvIter = Self;
24
25    fn into_ref_kv_iter(self) -> Self::IntoRefKvIter {
26        self
27    }
28}