e2r 0.10.0

experimental rendering engine in rust
Documentation
#[derive(Clone, Debug)]
pub struct LoadSingle < T > {
    _buf: Option< T >,
    ///if true, no-load if there exists data
    pub _is_blocking: bool,
}

impl < T > Default for LoadSingle < T > {
    fn default() -> Self {
        Self {
            _buf: None,
            _is_blocking: false,
        }
    }
}

impl < T > LoadSingle < T > {

    pub fn load( & mut self, t: T ) -> Result< (), & 'static str > {
        if self._is_blocking {
            if self._buf.is_none() {
                self._buf = Some( t );
            }
        } else {
            self._buf = Some( t );
        }
        
        Ok( () )
    }

    pub fn apply< F >( & mut self, mut f: F ) -> Result< (), & 'static str >
        where F: FnMut( & T ) -> bool
    {

        let consumed = match self._buf {
            None => { false }, //do nothing if no data
            Some(ref x) => { f( x ); true },
        };

        if consumed {
            self._buf = None;
        }

        Ok( () )
    }
}