noodles_bcf/io/reader/
record_bufs.rs1use std::io::{self, Read};
2
3use noodles_vcf::{self as vcf, variant::RecordBuf};
4
5use super::Reader;
6
7pub struct RecordBufs<'r, 'h, R>
11where
12 R: Read,
13{
14 reader: &'r mut Reader<R>,
15 header: &'h vcf::Header,
16 record: RecordBuf,
17}
18
19impl<'r, 'h, R> RecordBufs<'r, 'h, R>
20where
21 R: Read,
22{
23 pub(crate) fn new(reader: &'r mut Reader<R>, header: &'h vcf::Header) -> Self {
24 Self {
25 reader,
26 header,
27 record: RecordBuf::default(),
28 }
29 }
30}
31
32impl<R> Iterator for RecordBufs<'_, '_, R>
33where
34 R: Read,
35{
36 type Item = io::Result<RecordBuf>;
37
38 fn next(&mut self) -> Option<Self::Item> {
39 match self.reader.read_record_buf(self.header, &mut self.record) {
40 Ok(0) => None,
41 Ok(_) => Some(Ok(self.record.clone())),
42 Err(e) => Some(Err(e)),
43 }
44 }
45}