arrayset 3.1.1

An array-backed ordered set type.
Documentation
use super::{OrdSet, ZST};
use crate::ord::map::IntoIter as Inner;
use core::iter::FusedIterator;

pub struct IntoIter<T, const N: usize> {
    inner: Inner<T, ZST, N>,
}

impl<T, const N: usize> IntoIter<T, N> {
    pub(super) fn new(set: OrdSet<T, N>) -> Self {
        Self {
            inner: set.inner.into_iter(),
        }
    }
}

impl<T, const N: usize> Iterator for IntoIter<T, N> {
    type Item = T;

    fn next(&mut self) -> Option<Self::Item> {
        self.inner.next().map(|(k, _)| k)
    }
    fn size_hint(&self) -> (usize, Option<usize>) {
        self.inner.size_hint()
    }
}

impl<T, const N: usize> DoubleEndedIterator for IntoIter<T, N> {
    fn next_back(&mut self) -> Option<Self::Item> {
        self.inner.next_back().map(|(k, _)| k)
    }
}

impl<T, const N: usize> ExactSizeIterator for IntoIter<T, N> {}
impl<T, const N: usize> FusedIterator for IntoIter<T, N> {}