Gegeben:
for foo, bar in [(1, 2), (3, 4)] {}
rustc produziert:
error: missing `in` in `for` loop
--> src/main.rs:44:12
|
44 | for foo, bar in [(1, 2)] {}
| ^ help: try adding `in` here
error: expected expression, found `,`
--> src/main.rs:44:12
|
44 | for foo, bar in [(1, 2)] {}
| ^
…aber es wäre besser, wenn es herausfindet, dass der Benutzer vermutlich for (foo, bar) in ...
beabsichtigt hat, und eine spezifischere Fehlermeldung ausgibt.
Dies ist wahrscheinlich ein etwas häufiger Fehler, der von Python kommt, das eine ähnliche Syntax für for
Schleifen hat, aber das Weglassen der Klammern ermöglicht.
Wenn dies von Python inspiriert ist, sollten diese Diagnosen/Wiederherstellungen idealerweise auch für let
.
let a, b = (10, 11);
=>
let (a, b) = (10, 11);
Ich vermute, wir können diese Wiederherstellung sogar als "Auto-Tupling" in allen Ausdrucks- und Musterkontexten implementieren.
illegal a, b, c
=>
(a, b, c)
:+1: Nicht nur Python, dies wird auch für Go-Benutzer hilfreich sein.
for k, v := range myMap {
x, err = /* ... */
}
(Ich habe diesbezüglich einige Fortschritte gemacht; PR in Kürze)
Hilfreichster Kommentar
Wenn dies von Python inspiriert ist, sollten diese Diagnosen/Wiederherstellungen idealerweise auch für
let
.Ich vermute, wir können diese Wiederherstellung sogar als "Auto-Tupling" in allen Ausdrucks- und Musterkontexten implementieren.