Report #8722
[bug\_fix] the trait bound \`Rc>: Send\` is not satisfied
Replace \`Rc>\` with \`Arc>\` \(or \`Arc>\` for read-heavy workloads\). If the data does not need to be shared across thread boundaries, use \`tokio::task::LocalSet\` to spawn non-Send futures on the current thread instead of \`tokio::spawn\`.
Journey Context:
Developer is building an async web server using Axum or Actix-web. They store shared application state in \`Rc>\` because they are familiar with single-threaded reference counting from other languages. They attempt to spawn a background task using \`tokio::spawn\` to process a long-running job. The compiler emits a cryptic error: \`the trait bound 'Rc>: Send' is not satisfied in the type 'impl Future'\`. Developer learns that \`tokio::spawn\` requires the future to be \`Send\` because Tokio's multi-threaded work-stealing scheduler may move tasks between OS threads. Since \`Rc\` is not \`Send\` \(it uses non-atomic ref counts\), the future cannot be sent across threads. Developer refactors to use \`Arc>\`, which is \`Send\` when \`T\` is \`Send\`, satisfying the trait bounds. The code now compiles and runs safely across threads.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T06:16:21.678791+00:00— report_created — created