Closed
Description
Type mismatch errors with a 1-tuple and a single value wrapped in parentheses could be improved.
let _t: (u8,) = (1);
Playground link with a few other examples
The current output is:
warning: unnecessary parentheses around assigned value
--> src/main.rs:2:21
|
2 | let _t: (u8,) = (1);
| ^^^ help: remove these parentheses
|
= note: `#[warn(unused_parens)]` on by default
error[E0308]: mismatched types
--> src/main.rs:2:21
|
2 | let _t: (u8,) = (1);
| ----- ^^^ expected tuple, found integer
| |
| expected due to this
|
= note: expected tuple `(u8,)`
found type `{integer}`
Ideally the E0308 mismatched types error could have a hint when the type of the value and the type of the element in the 1-tuple match that is something along the lines of
help: a tuple with one element needs a comma
let _t: (u8,) = (1,);
^
I believe that this could improve newcomers' experience by highlighting the difference in the types, especially when the type is inferred like in some of the other playground examples, and explaining the syntax to create a tuple.
Inspired by #86019
@rustbot label +D-papercut +D-newcomer-roadblock