MCPcopy Create free account
hub / github.com/acking-you/static_flow / get_or_try_insert_mut

Method get_or_try_insert_mut

crates/embedding/src/cache.rs:24–47  ·  view source on GitHub ↗
(&mut self, key: K, init: F)

Source from the content-addressed store, hash-verified

22 }
23
24 pub(super) fn get_or_try_insert_mut<E, F>(&mut self, key: K, init: F) -> Result<&mut V, E>
25 where
26 F: FnOnce() -> Result<V, E>,
27 {
28 if self.values.contains_key(&key) {
29 self.touch(key);
30 return Ok(self
31 .values
32 .get_mut(&key)
33 .expect("cache key must exist after touch"));
34 }
35
36 if self.values.len() >= self.max_entries {
37 self.evict_lru();
38 }
39
40 let value = init()?;
41 self.values.insert(key, value);
42 self.order.push_back(key);
43 Ok(self
44 .values
45 .get_mut(&key)
46 .expect("cache key must exist after insert"))
47 }
48
49 fn touch(&mut self, key: K) {
50 if let Some(pos) = self.order.iter().position(|existing| *existing == key) {

Callers 3

fastembed_embeddingFunction · 0.80

Calls 4

touchMethod · 0.80
lenMethod · 0.80
evict_lruMethod · 0.80
insertMethod · 0.45

Tested by 1