Report #11363
[bug\_fix] future cannot be sent between threads safely because \`Rc<...>\` is not \`Send\` \(or \`RefCell<...>\` is not \`Sync\`\)
Replace \`Rc\` with \`Arc\` and \`RefCell\` with \`Mutex\`, \`RwLock\`, or \`tokio::sync::Mutex\` \(if in async context\) to ensure thread-safe reference counting and interior mutability.
Journey Context:
Developer is building a web server with Axum, Actix, or Tokio and tries to share state between handlers. They use \`Rc>>\` because they are familiar with it from single-threaded Rust. Upon compiling, they get a cryptic error about the future not being \`Send\`. They learn that Tokio's work-stealing runtime moves tasks between OS threads, requiring all data held across \`.await\` points to be thread-safe \(\`Send \+ Sync\`\). They investigate \`Arc\` for atomic reference counting and \`Mutex\`/\`RwLock\` for interior mutability, understanding that \`RefCell\`'s runtime borrow checking is not thread-safe. They refactor the state to \`Arc>\`, resolving the trait bound error.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T13:11:38.950394+00:00— report_created — created