1use crate::MinosCodexError;
2use regex::Regex;
3use std::collections::HashMap;
4
5pub struct RegexCache {
6 cache: HashMap<String, Regex>,
7}
8
9impl RegexCache {
10 pub fn new() -> Self {
11 RegexCache {
12 cache: HashMap::new(),
13 }
14 }
15
16 pub fn get_or_insert(&mut self, pattern: &str) -> Result<&Regex, MinosCodexError> {
17 if !self.cache.contains_key(pattern) {
18 let regex = Regex::new(pattern)?;
19 self.cache.insert(pattern.to_string(), regex);
20 }
21 Ok(self.cache.get(pattern).unwrap())
22 }
23}