Rust: forループのタプルdestructureで欠落しているparensのエラーメッセージを改善します

作成日 2018年02月24日  ·  3コメント  ·  ソース: rust-lang/rust

与えられた:

    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ループの構文は似ていますが、括弧を省略できます。

A-diagnostics

最も参考になるコメント

これがPythonに触発されたものである場合、これらの診断/回復は理想的にはletにも適用されるはずです。

let a, b = (10, 11);

=>

let (a, b) = (10, 11);

このリカバリは、すべての式とパターンのコンテキストで「自動タッピング」として実装することもできると思います。

illegal a, b, c

=>

(a, b, c)

全てのコメント3件

これが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は近日公開されます)

このページは役に立ちましたか?
0 / 5 - 0 評価