mod builder;
mod inner;
use futures::Stream;
use noodles_vcf as vcf;
use tokio::io::{self, AsyncRead};
pub use self::builder::Builder;
use self::inner::Inner;
use crate::variant::Record;
pub struct Reader<R>(Inner<R>)
where
R: AsyncRead;
impl<R> Reader<R>
where
R: AsyncRead + Unpin,
{
pub async fn read_header(&mut self) -> io::Result<vcf::Header> {
self.0.read_header().await
}
pub async fn read_record(&mut self, record: &mut Record) -> io::Result<usize> {
self.0.read_record(record).await
}
pub fn records(
&mut self,
) -> impl Stream<Item = io::Result<Box<dyn vcf::variant::Record>>> + '_ {
self.0.records()
}
}
impl<R> Reader<R>
where
R: AsyncRead + Unpin,
{
pub async fn new(reader: R) -> io::Result<Self> {
Builder::default().build_from_reader(reader).await
}
}