serde_smile/de/
string_cache.rs

1use std::borrow::Cow;
2
3const LIMIT: usize = 1024;
4
5pub struct StringCache<'de> {
6    vec: Vec<Cow<'de, str>>,
7}
8
9impl<'de> StringCache<'de> {
10    pub fn new() -> Self {
11        StringCache { vec: vec![] }
12    }
13
14    pub fn intern(&mut self, s: Cow<'de, str>) {
15        if self.vec.len() >= LIMIT {
16            self.vec.clear();
17        }
18
19        self.vec.push(s);
20    }
21
22    pub fn get(&self, reference: u16) -> Option<&Cow<'de, str>> {
23        self.vec.get(reference as usize)
24    }
25}