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