use super::{super::normal::*, iterator::*};
use std::collections::*;
pub struct KeyValuePairIteratorForHashMap<'own, AnnotatedT> {
pub inner: hash_map::Iter<'own, Variant<AnnotatedT>, Variant<AnnotatedT>>,
}
impl<'own, AnnotatedT> KeyValuePairIteratorForHashMap<'own, AnnotatedT> {
pub fn new(inner: hash_map::Iter<'own, Variant<AnnotatedT>, Variant<AnnotatedT>>) -> Self {
Self { inner }
}
pub fn new_for(map: &'own HashMap<Variant<AnnotatedT>, Variant<AnnotatedT>>) -> Self {
Self::new(map.into_iter())
}
}
impl<'own, AnnotatedT> KeyValuePairIterator<AnnotatedT> for KeyValuePairIteratorForHashMap<'own, AnnotatedT> {
fn next(
&mut self,
) -> Result<
Option<(&'own Variant<AnnotatedT>, &'own Variant<AnnotatedT>)>,
(MalformedError<AnnotatedT>, &Variant<AnnotatedT>),
> {
Ok(self.inner.next())
}
}
pub struct IntoKeyValuePairIteratorForHashMap<AnnotatedT> {
pub inner: hash_map::IntoIter<Variant<AnnotatedT>, Variant<AnnotatedT>>,
}
impl<AnnotatedT> IntoKeyValuePairIteratorForHashMap<AnnotatedT> {
pub fn new(inner: hash_map::IntoIter<Variant<AnnotatedT>, Variant<AnnotatedT>>) -> Self {
Self { inner }
}
pub fn new_for(map: HashMap<Variant<AnnotatedT>, Variant<AnnotatedT>>) -> Self {
Self::new(map.into_iter())
}
}
impl<AnnotatedT> IntoKeyValuePairIterator<AnnotatedT> for IntoKeyValuePairIteratorForHashMap<AnnotatedT> {
fn next(
&mut self,
) -> Result<Option<(Variant<AnnotatedT>, Variant<AnnotatedT>)>, (MalformedError<AnnotatedT>, Variant<AnnotatedT>)>
{
Ok(self.inner.next())
}
}