I'm not sure how useful this would be in practice, given that you'd likely use the async/await syntax instead, but should the following be allowed/possible and if not: Why not?
I don't know enough details about pin project (and future changes to improve its usability), so I don't really know how useful this'd be for those implementing a Future (combinator) in practice.
In retrospect, I think the one you're proposing here would have been a better one -- the nested ones are a bit odd conceptually, even if they were convenient before -- but as mentioned that's probably not going to change now.
Doesn't the fact that the existing Try implementations are experimental nightly features mean that they could be removed if a better solution was proposed?
It'd be pretty easy, I think -- use the edition of the ? token to pick the desugaring, so we can use a never-stable internal trait on old editions, then on new editions use a new stabilization-track one with different implementations.