I thought it was quite manageable at beginner level…though I haven’t dived into async which I gather is a whole different level of pain
replies(1):
Almost 90% of the Rust I write these days is async. I avoid non-async / blocking libraries where possible.
I think this whole issue is overblown.
When it came time for me to undo all the async-trait library hack stuff I wrote after the feature landed in stable, I realized I wasn't really held back by not having it.
I very rarely have to care about future pinning, mostly just to call the pin macro when working with streams sometimes.