diff --git a/src/components/util/cache.rs b/src/components/util/cache.rs index e8cf2c56947..02859014bbd 100644 --- a/src/components/util/cache.rs +++ b/src/components/util/cache.rs @@ -34,13 +34,13 @@ impl Cache for MonoCache { } fn find_or_create(&mut self, key: &K, blk: &fn(&K) -> V) -> V { - match self.entry { - None => { + match self.find(key) { + Some(value) => value, + None => { let value = blk(key); self.entry = Some((key.clone(), value.clone())); value - }, - Some((ref _k, ref v)) => v.clone() + } } } @@ -58,11 +58,9 @@ fn test_monocache() { assert!(cache.find(&1).is_some()); assert!(cache.find(&2).is_none()); - /* FIXME: clarify behavior here: cache.find_or_create(&2, |_v| { two }); assert!(cache.find(&2).is_some()); assert!(cache.find(&1).is_none()); - */ } pub struct HashCache {