No. Wrap a cache in a lock (`Mutex`, `RwLock`) or enable the `concurrency` feature
to use built-in concurrent wrappers like `ConcurrentClockRing`.
Yes. `get` updates recency or frequency depending on the policy. Use `contains`
when you want to check presence without updating metadata.
The cache evicts an entry according to the selected policy.
Policies handle zero capacity differently; some clamp to 1. Prefer explicit
capacity >= 1 unless you are validating edge cases.
Some policies store values behind `Arc` to minimize copies. The builder hides
this detail so the unified `Cache<K, V>` API still works with owned values.