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