1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
use std::collections::HashSet;

use crate::types::*;

#[derive(Default, Debug)]
pub struct Cache {
    pub(crate) visited: HashSet<AnaValue>,
    visited_max_size: usize,
}

impl Cache {
    pub fn new(visited_max_size: usize) -> Cache {
        Cache {
            visited: HashSet::with_capacity(visited_max_size),
            visited_max_size: visited_max_size,
        }
    }

    pub fn clear(&mut self) {
        self.visited.clear();
    }

    pub fn check(&mut self) {
        if self.visited_max_size > 0 && (self.visited.len() > self.visited_max_size) {
            self.visited.clear();
        }
    }
}