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}