event-file-reader 0.4.0

Generic reader for scattering event files
Documentation
use std::io::BufRead;

use avery::Event;

use crate::reader::Error;

pub(crate) struct Reader<T>(lhef::Reader<T>);

impl<T: BufRead> Reader<T> {
    pub(crate) fn new(input: T) -> Result<Self, Error> {
        let reader = lhef::Reader::new(input)?;
        Ok(Self(reader))
    }
}

impl<T: BufRead> Iterator for Reader<T> {
    type Item = Result<Event, Error>;

    fn next(&mut self) -> Option<Self::Item> {
        let ev = self.0.hepeup();
        match ev {
            Ok(Some(ev)) => Some(Ok((self.0.heprup().to_owned(), ev).into())),
            Ok(None) => None,
            Err(err) => Some(Err(err.into())),
        }
    }
}