It's extremely challenging to make async that is usable without introducing a garbage collector or a whole lot of runtime overhead.
A better comparison would be between the Rust and C++ paths to async - C++ also spent years designing their async system, and the end result is divisive at best.