error[E0308]: mismatched types --> $DIR/issue-102605.rs:13:20 | LL | convert_result(foo()) | -------------- ^^^^^ expected `Result<(), _>`, found future | | | arguments to this function are incorrect | note: calling an async function returns a future --> $DIR/issue-102605.rs:13:20 | LL | convert_result(foo()) | ^^^^^ note: function defined here --> $DIR/issue-102605.rs:7:4 | LL | fn convert_result(r: Result) -> Option { | ^^^^^^^^^^^^^^ --------------- help: consider `await`ing on the `Future` | LL | convert_result(foo().await) | ++++++ help: try wrapping the expression in `Err` | LL | convert_result(Err(foo())) | ++++ + error[E0277]: `main` has invalid return type `Option<()>` --> $DIR/issue-102605.rs:11:14 | LL | fn main() -> Option<()> { | ^^^^^^^^^^ `main` can only return types that implement `Termination` | = help: consider using `()`, or a `Result` error: aborting due to 2 previous errors Some errors have detailed explanations: E0277, E0308. For more information about an error, try `rustc --explain E0277`.