pub(crate) mod builder;
mod inner;
use std::io::{self, Read};
use noodles_sam as sam;
pub use self::builder::Builder;
use self::inner::Inner;
pub struct Reader<R>(Inner<R>);
impl<R> Reader<R>
where
R: Read,
{
pub fn new(reader: R) -> io::Result<Self> {
Builder::default().build_from_reader(reader)
}
pub fn read_header(&mut self) -> io::Result<sam::Header> {
self.0.read_header()
}
pub fn records<'r, 'h: 'r>(
&'r mut self,
header: &'h sam::Header,
) -> impl Iterator<Item = io::Result<Box<dyn sam::alignment::Record>>> + 'r {
self.0.records(header)
}
}