Improve ? error messages per RFC 1859 · Issue #35946 · rust-lang/rust (original) (raw)

RFC 1859 laid out specific error messages for the ? operator, but currently they are not implemented (and instead the compiler's internal desugaring is revealed).

UPDATE: Many parts of this are done, but not all. Here is a post with examples that are not yet great.

UPDATE 2: to close this ticket we need to improve the output of a single case left to point at the return type to explain where usize is coming from.


Original text:

try! in main has long been an issue, to the point of trying to adjust the language to support it: rust-lang/rfcs#1176

I was trying out ? today, and hit this error:

error[E0308]: mismatched types --> src/main.rs:5:13 | 5 | let f = File::open("hello.txt")?; | ^^^^^^^^^^^^^^^^^^^^^^^^ expected (), found enum std::result::Result | = note: expected type () = note: found type std::result::Result<_, _>

That's the only line, inside of a main() function. Even though I know about this pitfall, and have been using Rust for a long time, I asked a question about it on IRC.

Can we print a better diagnostic here that points out it's the return type of the function that's looking for ()?