use std::collections::HashSet;
use std::path::PathBuf;
use crate::audit::entry_audit_handler::EntryAuditHandler;
use crate::audit::entry_view::EntryView;
use crate::audit::report::ZipAuditReport;
pub struct DuplicatesHandler {
seen: HashSet<PathBuf>,
}
impl DuplicatesHandler {
pub fn new() -> Self {
Self {
seen: HashSet::new(),
}
}
}
impl Default for DuplicatesHandler {
fn default() -> Self {
Self::new()
}
}
impl EntryAuditHandler for DuplicatesHandler {
fn visit(&mut self, view: &EntryView, report: &mut ZipAuditReport) {
let added = self.seen.insert(view.enclosed_name.clone());
if added == false {
report.trace_duplicate(view.enclosed_name.clone());
}
}
}