reliq 0.1.0

A portable library of primitive-like constructs.
Documentation
use super::*;

pub struct Iter<const A: usize, B> {
    pub(super) buf: [::core::mem::MaybeUninit<B>; A],
    pub(super) len: usize,
    pub(super) key: usize
}

impl<const A: usize, B> Iterator for Iter<A, B> {
    type Item = B;

    #[inline]
    fn next(&mut self) -> Option<Self::Item> {
        if self.key >= self.len {
            return None
        }
        let data = unsafe {
            self.buf[self.key].assume_init_read()
        };
        self.key += 1;
        Some(data)
    }

    #[inline]
    fn size_hint(&self) -> (usize, Option<usize>) {
        let left: usize = self.len - self.key;
        (left, Some(left))
    }
}