// edition:2018 use core::future::Future; async fn base_thing() -> Result<(), ()> { Ok(()) } fn thing_one() -> impl Future> { base_thing() } fn thing_two() -> impl Future> { base_thing() } async fn thing() -> Result<(), ()> { if true { thing_one() } else { thing_two() //~ ERROR `if` and `else` have incompatible types }.await } fn main() {}