Are the `AsyncFn***` traits incomplete?

The AsyncFn trait exists...

That's pretty much all I can say about it.

I had a few use-cases where I needed to accept a closure that returns a future, but every time, using impl AsyncFn (or equivalent) turns out to be more of an hassle than <F: Fn(..) -> Fut, Fut: Future<Output=T>>, because of Send Sync bounds, lifetime bounds and compiler errors that are very hard to parse involving seemingly internal associated types.

So, is AsyncFn unusable as-is, or am I holding it wrong?

Marking this one as resolved, because the "suggested topics" in the post editor didn't point to the awesome ones that are at the bottom of this page, please check the links at the bottom of the page if you want an answer.