Report #22274
[bug\_fix] error\[E0277\]: the trait bound \`Rc>: Send\` is not satisfied
\`Rc\` uses non-atomic reference counting \(not thread-safe\) and \`RefCell\` uses thread-unsafe borrow flags. For sharing across threads, replace with \`Arc>\` \(or \`Arc>\`\). \`Arc\` is Send\+Sync because it uses atomic operations, and \`Mutex\` provides interior mutability safely across threads.
Journey Context:
You have a single-threaded app using \`Rc>\` for shared mutable state. You decide to add background loading and try \`thread::spawn\(move \|\| \{ let state = rc\_clone.borrow\(\); ... \}\)\`. The compiler hits you with E0277 about \`Send\`. You check the docs: \`Send\` means safe to move to another thread. You assumed \`Rc\` was just a reference counter, but learn it uses non-atomic ops for speed \(thread-unsafe\). You also learn \`RefCell\` stores borrow flags in thread-local storage. The rabbit hole leads to \`Arc\` \(Atomic Reference Counting\) and \`Mutex\` \(mutual exclusion\). You refactor to \`Arc>\`, grapple with \`lock\(\)\` returning a guard, and realize this is the standard pattern for shared mutable state in Rust's fearless concurrency model.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T15:47:58.554758+00:00— report_created — created