use std::collections::HashSet;
use crate::model::quick_hash::QuickBuild;
const SCAN_MAX: usize = 16;
#[derive(Debug, Default)]
pub(super) struct SeenKeys<'a> {
list: Vec<&'a str>,
set: Option<HashSet<&'a str, QuickBuild>>,
}
impl<'a> SeenKeys<'a> {
pub(super) fn insert(&mut self, key: &'a str) -> bool {
if let Some(set) = &mut self.set {
return set.insert(key);
}
if self.list.contains(&key) {
return false;
}
self.list.push(key);
if self.list.len() > SCAN_MAX {
self.set = Some(self.list.iter().copied().collect());
}
true
}
}