error[E0277]: the `?` operator can only be applied to values that implement `Try` --> $DIR/issue-61076.rs:42:5 | LL | foo()?; | ^^^^^^ the `?` operator cannot be applied to type `impl Future>` | = help: the trait `Try` is not implemented for `impl Future>` help: consider `await`ing on the `Future` | LL | foo().await?; | ++++++ error[E0277]: the `?` operator can only be applied to values that implement `Try` --> $DIR/issue-61076.rs:65:5 | LL | t?; | ^^ the `?` operator cannot be applied to type `T` | = help: the trait `Try` is not implemented for `T` help: consider `await`ing on the `Future` | LL | t.await?; | ++++++ error[E0609]: no field `0` on type `impl Future` --> $DIR/issue-61076.rs:74:26 | LL | let _: i32 = tuple().0; | ^ field not available in `impl Future`, but it is available in its `Output` | help: consider `await`ing on the `Future` and access the field of its `Output` | LL | let _: i32 = tuple().await.0; | ++++++ error[E0609]: no field `a` on type `impl Future` --> $DIR/issue-61076.rs:78:28 | LL | let _: i32 = struct_().a; | ^ field not available in `impl Future`, but it is available in its `Output` | help: consider `await`ing on the `Future` and access the field of its `Output` | LL | let _: i32 = struct_().await.a; | ++++++ error[E0599]: no method named `method` found for opaque type `impl Future` in the current scope --> $DIR/issue-61076.rs:82:15 | LL | struct_().method(); | ^^^^^^ method not found in `impl Future` | help: consider `await`ing on the `Future` and calling the method on its `Output` | LL | struct_().await.method(); | ++++++ error[E0308]: mismatched types --> $DIR/issue-61076.rs:91:9 | LL | match tuple() { | ------- this expression has type `impl Future` LL | LL | Tuple(_) => {} | ^^^^^^^^ expected opaque type, found struct `Tuple` | note: while checking the return type of the `async fn` --> $DIR/issue-61076.rs:56:21 | LL | async fn tuple() -> Tuple { | ^^^^^ checked the `Output` of this `async fn`, expected opaque type = note: expected opaque type `impl Future` found struct `Tuple` help: consider `await`ing on the `Future` | LL | match tuple().await { | ++++++ error: aborting due to 6 previous errors Some errors have detailed explanations: E0277, E0308, E0599, E0609. For more information about an error, try `rustc --explain E0277`.