Rust: تحسين رسالة الخطأ للأقواس المفقودة في إتلاف المجموعة في حلقة for

تم إنشاؤها على ٢٤ فبراير ٢٠١٨  ·  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);

أظن أنه يمكننا حتى تنفيذ هذا الاسترداد كـ "tupling تلقائي" في جميع سياقات التعبير والنمط.

illegal a, b, c

=>

(a, b, c)

ال 3 كومينتر

إذا كان هذا شيئًا مستوحى من لغة Python ، فيجب أن تنطبق هذه التشخيصات / الاسترداد بشكل مثالي على let أيضًا.

let a, b = (10, 11);

=>

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

أظن أنه يمكننا حتى تنفيذ هذا الاسترداد كـ "tupling تلقائي" في جميع سياقات التعبير والنمط.

illegal a, b, c

=>

(a, b, c)

: +1: ليس فقط بايثون ، سيكون هذا مفيدًا لمستخدمي Go أيضًا.

for k, v := range myMap {
    x, err = /* ... */
}

(لقد أحرزت بعض التقدم في هذا الأمر ؛ العلاقات العامة قادمة)

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات