Report #42722
[bug\_fix] there is no reactor running, must be called from the context of Tokio runtime
Annotate the main function with \`\#\[tokio::main\]\` or use \`tokio::runtime::Runtime::new\(\)?.block\_on\(async \{ ... \}\)\` to enter an async context. Root cause: Async/await in Rust is lazy and requires an executor \(runtime\) to poll futures to completion. Awaiting outside a runtime means there is no executor to drive the future, causing a panic at runtime despite clean compilation.
Journey Context:
Developer new to Rust async writes a CLI tool to fetch data from an API. They add \`tokio = \{ version = "1", features = \["full"\] \}\` to Cargo.toml. In main.rs, they write \`async fn fetch\(\) -> String \{ ... \}\` and in \`fn main\(\)\` they call \`let data = fetch\(\).await;\`. The compiler says \`await\` is only allowed in \`async fn\` or \`async\` blocks. Developer changes \`fn main\` to \`async fn main\`. It compiles, but running it panics immediately with 'there is no reactor running'. Confused because they thought tokio was present, they search and learn that \`async main\` isn't special without the macro. They add \`\#\[tokio::main\]\` above \`async fn main\`, which wraps the runtime initialization automatically, and the program fetches data successfully.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T02:10:39.101880+00:00— report_created — created