error[E0308]: `if` and `else` have incompatible types --> $DIR/opaque-type-error.rs:20:9 | LL | fn thing_one() -> impl Future> { | ------------------------------------ the expected opaque type ... LL | fn thing_two() -> impl Future> { | ------------------------------------ the found opaque type ... LL | / if true { LL | | thing_one() | | ----------- expected because of this LL | | } else { LL | | thing_two() | | ^^^^^^^^^^^ expected opaque type, found a different opaque type LL | | }.await | |_____- `if` and `else` have incompatible types | = note: expected opaque type `impl Future>` (opaque type at <$DIR/opaque-type-error.rs:8:19>) found opaque type `impl Future>` (opaque type at <$DIR/opaque-type-error.rs:12:19>) = note: distinct uses of `impl Trait` result in different opaque types help: consider `await`ing on both `Future`s | LL ~ thing_one().await LL | } else { LL ~ thing_two().await | error: aborting due to previous error For more information about this error, try `rustc --explain E0308`.