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}