use crate::{io::TsvRecordIterator, ranges::GenomicRangeRecord, GRangesError};
use serde::{Deserialize, Serialize};
use std::path::PathBuf;
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
#[serde(deny_unknown_fields)]
pub struct Bed4Addition {
pub name: String,
}
#[derive(Debug)]
pub struct Bed4Iterator {
iter: TsvRecordIterator<GenomicRangeRecord<Bed4Addition>>,
}
impl Bed4Iterator {
pub fn new(filepath: impl Into<PathBuf>) -> Result<Self, GRangesError> {
let iter = TsvRecordIterator::new(filepath)?;
Ok(Self { iter })
}
}
impl Iterator for Bed4Iterator {
type Item = Result<GenomicRangeRecord<Bed4Addition>, GRangesError>;
fn next(&mut self) -> Option<Self::Item> {
self.iter.next()
}
}