luaur_common/records/
iterator.rs1use core::marker::PhantomData;
11
12use crate::records::dense_hash_table::{DenseEq, ItemInterface};
13
14pub struct MutIterator<'a, K, I, Iface, E> {
15 pub(crate) inner: core::slice::IterMut<'a, I>,
16 pub(crate) empty_key: K,
17 pub(crate) eq: E,
18 pub(crate) _iface: PhantomData<Iface>,
19}
20
21impl<'a, K, I, Iface, E> Iterator for MutIterator<'a, K, I, Iface, E>
22where
23 Iface: ItemInterface<K, I>,
24 E: DenseEq<K>,
25{
26 type Item = &'a mut I;
27
28 fn next(&mut self) -> Option<&'a mut I> {
29 for item in self.inner.by_ref() {
30 if !self.eq.eq(Iface::get_key(item), &self.empty_key) {
31 return Some(item);
32 }
33 }
34 None
35 }
36}