Your attempts aren't really about variance as written; you're trying to return some unrelated lifetime, any related lifetime, which is basically going to require returning something with a 'static lifetime.
A returned impl Trait captures all generic type parameters/inputs, so if you want to return a 'static one, you need a 'static bound on them... which won't work with local borrows.
Thanks a lot for looking into this. I can at least stop banging my head against the wall .
My use case is a bit more complicated and type_alias_impl_trait feature does not seem to cut it just yet. (error: non-defining opaque type use in defining scope )
I'll try to create a specific type implementing Future where I can control the lifetime annotations an return that instead.
Again, thank you