#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum UnclassifiedTracking {
CountOnly,
TrackLines,
CaptureData,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[non_exhaustive]
pub enum UnclassifiedReason {
OrphanContinuation,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct UnclassifiedLine {
pub line_number: u64,
pub reason: UnclassifiedReason,
pub data: Option<String>,
}
#[derive(Debug, Clone, Default)]
pub struct ParseStats {
pub lines_processed: u64,
pub lines_unclassified: u64,
pub lines_in_entries: u64,
pub lines_empty_orphan: u64,
pub lines_split: u64,
pub lines_dropped: u64,
pub unclassified_lines: Vec<UnclassifiedLine>,
}
impl ParseStats {
pub fn unaccounted_lines(&self) -> i64 {
let expected = self.lines_in_entries + self.lines_empty_orphan + self.lines_dropped;
let actual = self.lines_processed + self.lines_split;
actual as i64 - expected as i64
}
}