Данный:
for foo, bar in [(1, 2), (3, 4)] {}
rustc производит:
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)] {}
| ^
… Но было бы лучше, если бы он выяснил, что пользователь предположительно имел в виду for (foo, bar) in ...
, и выдал более конкретное сообщение об ошибке.
Вероятно, это довольно распространенная ошибка Python, которая имеет аналогичный синтаксис для циклов for
но позволяет опускать круглые скобки.
Если это что-то вдохновленное Python, тогда эти диагностика / восстановление в идеале должны применяться и к let
.
let a, b = (10, 11);
=>
let (a, b) = (10, 11);
Я подозреваю, что мы можем даже реализовать это восстановление как «автоматическое кортежирование» во всех контекстах выражений и шаблонов.
illegal a, b, c
=>
(a, b, c)
: +1: Не только Python, это будет полезно и для пользователей Go.
for k, v := range myMap {
x, err = /* ... */
}
(Я добился некоторого прогресса в этом; ожидается PR)
Самый полезный комментарий
Если это что-то вдохновленное Python, тогда эти диагностика / восстановление в идеале должны применяться и к
let
.Я подозреваю, что мы можем даже реализовать это восстановление как «автоматическое кортежирование» во всех контекстах выражений и шаблонов.