Rust is great as long as you don't have to async
I really love working on Rust up until I have to add async to the mix. Lately I just avoid adding async at all costs because it just comes with so many caveats and gotchas that the effort is sometimes not worth the performance improvement. Some of the things that I absolutely find annoying:
async is not part of rust, it's a library. The main one being Tokio with no real alternative. I applaud the work done on this but it all just feels horribly hacky.
any time you have to use async you taint all your functions and types with it. As if dropping a bucket of paint (worse than paint but let's keep it civil) all over your code. It makes refactoring a horrible experience. As you crawl your codebase to make it async you eventually end up with an impossible task and have to find ugly alternatives (looking at you async fn in traits)
while the rust compiler has been an amazing tool along the journey, it just fails miserably with async. It won't complain at all if you forgot to remove a blocking fs call in an async context and of course it will fail horribly at run time. And when the program eventually crashes, it will just render the most obscure stacktrace i've ever seen. FAR from the developper experience of vanilla Rust.
Overall for such a great language with so many features, it just feels broken as soon as you put your finger in the async business. I ve been looking at the async improvement proposals but apart from async fn traits, i just don't see anything revolutionary that would make the experience better.
At some point, shouldn't it just be part of the language if async Rust is to improve in a major way ?
Disclaimer: I am not a Rust expert, but i ve been programming for 25+ years in many different languages.