Dado:
for foo, bar in [(1, 2), (3, 4)] {}
rustc produz:
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)] {}
| ^
… Mas seria melhor se descobrisse que o usuário provavelmente pretendia for (foo, bar) in ...
e fornecesse uma mensagem de erro mais específica.
Este é provavelmente um erro comum vindo do Python, que tem sintaxe semelhante para for
loops, mas permite omitir os parênteses.
Se for algo inspirado em Python, o ideal é que esses diagnósticos / recuperação se apliquem a let
também.
let a, b = (10, 11);
=>
let (a, b) = (10, 11);
Suspeito que podemos até implementar essa recuperação como "tuplagem automática" em todos os contextos de expressão e padrão.
illegal a, b, c
=>
(a, b, c)
: +1: Não apenas Python, isso será útil para usuários Go também.
for k, v := range myMap {
x, err = /* ... */
}
(Fiz algum progresso nisso; PR em breve)
Comentários muito úteis
Se for algo inspirado em Python, o ideal é que esses diagnósticos / recuperação se apliquem a
let
também.Suspeito que podemos até implementar essa recuperação como "tuplagem automática" em todos os contextos de expressão e padrão.