<!-- Thank you for filing a bug report! 🐛 Please provide a short summary of the bug, along with any information you feel relevant to replicating the bug. If you cannot produce a minimal reproduction case (something that would work in isolation), please provide the steps or even link to a repository that causes the problematic output to occur. --> Given the following code: https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=b539ebe10f181c1f2b245a021684dff1 ```rust use std::future::Future; async fn foo() -> Result<(), i32> { func(async { Ok::<_, i32>(()) })?; Ok(()) } async fn func<T>(fut: impl Future<Output = T>) -> T { fut.await } ``` The current output is: ``` Compiling playground v0.0.1 (/playground) error[[E0277]](https://doc.rust-lang.org/stable/error-index.html#E0277): the `?` operator can only be applied to values that implement `Try` --> src/lib.rs:4:5 | 4 | func(async { Ok::<_, i32>(()) })?; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the `?` operator cannot be applied to type `impl Future<Output = Result<(), i32>>` | = help: the trait `Try` is not implemented for `impl Future<Output = Result<(), i32>>` For more information about this error, try `rustc --explain E0277`. ``` <!-- The following is not always necessary. --> Ideally the output should look like: ``` Compiling playground v0.0.1 (/playground) error[[E0277]](https://doc.rust-lang.org/stable/error-index.html#E0277): the `?` operator can only be applied to values that implement `Try` --> src/lib.rs:4:5 | 4 | func(async { Ok::<_, i32>(()) })?; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the `?` operator cannot be applied to type `impl Future<Output = Result<(), i32>>` | = help: try adding `.await` or something --> src/lib.rs:4:5 | 4 | func(async { Ok::<_, i32>(()) }).await?; | ++++++ | For more information about this error, try `rustc --explain E0277`. ``` <!-- If the problem is not self-explanatory, please provide a rationale for the change. --> <!-- If dramatically different output is caused by small changes, consider also adding them here. If you're using the stable version of the compiler, you should also check if the bug also exists in the beta or nightly versions. The output might also be different depending on the Edition. -->