Étant donné:
for foo, bar in [(1, 2), (3, 4)] {}
rustc produit :
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)] {}
| ^
… mais ce serait mieux s'il découvrait que l'utilisateur avait probablement l'intention de for (foo, bar) in ...
, et donnait un message d'erreur plus spécifique.
Il s'agit probablement d'une erreur assez courante provenant de Python, qui a une syntaxe similaire pour les boucles for
mais permet d'omettre les parenthèses.
S'il s'agit de quelque chose d'inspiré de Python, ces diagnostics/récupération devraient idéalement s'appliquer également à let
.
let a, b = (10, 11);
=>
let (a, b) = (10, 11);
Je soupçonne que nous pouvons même implémenter cette récupération en tant qu'"auto-tupling" dans tous les contextes d'expression et de modèle.
illegal a, b, c
=>
(a, b, c)
:+1: Pas seulement Python, cela sera également utile pour les utilisateurs de Go.
for k, v := range myMap {
x, err = /* ... */
}
(J'ai fait quelques progrès à ce sujet ; PR à venir)
Commentaire le plus utile
S'il s'agit de quelque chose d'inspiré de Python, ces diagnostics/récupération devraient idéalement s'appliquer également à
let
.Je soupçonne que nous pouvons même implémenter cette récupération en tant qu'"auto-tupling" dans tous les contextes d'expression et de modèle.