IMO the biggest issue with Rust async is that it's unfinished. It took years for us to get async traits (in MVP state even now), we still don't have a stable async iterator interface, tasks can't borrow data (due to no un-leakable types), there are no standard abstractions for writing libraries compatible with several executors, no async destructors, etc etc. All these problems are fixable, but they haven't been fixed yet, and it's been far too long.
What makes the pain of async worth it is easy heterogeneous selects. Can't do that with threads, there's no equivalent.
Comments
IMO the biggest issue with Rust async is that it's unfinished. It took years for us to get async traits (in MVP state even now), we still don't have a stable async iterator interface, tasks can't borrow data (due to no un-leakable types), there are no standard abstractions for writing libraries compatible with several executors, no async destructors, etc etc. All these problems are fixable, but they haven't been fixed yet, and it's been far too long.
What makes the pain of async worth it is easy heterogeneous selects. Can't do that with threads, there's no equivalent.