与えられた:
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
にも適用されるはずです。このリカバリは、すべての式とパターンのコンテキストで「自動タッピング」として実装することもできると思います。