fn g<U: Future>() {
let a: U::Output;
let b: U::Output;
// a and b can be of different type?
}
g::<!>();
I think the U: Future in the function’s type parameters implies that a specific U: Future impl has been passed to the function. In other words, no, there will be one type variable and a and b will both have that type.