photonic 0.1.1

Dynamic light controller and animator
Documentation
use super::BufferReader;

pub struct IMap<'a, B, F> {
    buffer: &'a B,
    mapper: F,
}

impl<'a, B, F> IMap<'a, B, F> {
    pub(super) fn new(buffer: &'a B, mapper: F) -> Self {
        return IMap {
            buffer,
            mapper,
        };
    }
}

impl<B, R, F> BufferReader for IMap<'_, B, F>
where
    B: BufferReader,
    F: Fn(usize, B::Element) -> R,
{
    type Element = R;

    fn get(&self, index: usize) -> R {
        return (self.mapper)(index, self.buffer.get(index));
    }

    fn size(&self) -> usize {
        return self.buffer.size();
    }
}