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
29
use std::collections::HashSet;

use crate::types::*;

#[derive(Default)]
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();
        }
    }

}