1 use core::iter::Peekable;
3 /// A iterator for deduping the key of a sorted iterator.
4 /// When encountering the duplicated key, only the last key-value pair is yielded.
6 /// Used by [`BTreeMap::bulk_build_from_sorted_iter`].
7 pub struct DedupSortedIter<K, V, I>
9 I: Iterator<Item = (K, V)>,
14 impl<K, V, I> DedupSortedIter<K, V, I>
16 I: Iterator<Item = (K, V)>,
18 pub fn new(iter: I) -> Self {
19 Self { iter: iter.peekable() }
23 impl<K, V, I> Iterator for DedupSortedIter<K, V, I>
26 I: Iterator<Item = (K, V)>,
30 fn next(&mut self) -> Option<(K, V)> {
32 let next = match self.iter.next() {
37 let peeked = match self.iter.peek() {
38 Some(peeked) => peeked,
39 None => return Some(next),
42 if next.0 != peeked.0 {