منح:
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);
أظن أنه يمكننا حتى تنفيذ هذا الاسترداد كـ "tupling تلقائي" في جميع سياقات التعبير والنمط.
illegal a, b, c
=>
(a, b, c)
: +1: ليس فقط بايثون ، سيكون هذا مفيدًا لمستخدمي Go أيضًا.
for k, v := range myMap {
x, err = /* ... */
}
(لقد أحرزت بعض التقدم في هذا الأمر ؛ العلاقات العامة قادمة)
التعليق الأكثر فائدة
إذا كان هذا شيئًا مستوحى من لغة Python ، فيجب أن تنطبق هذه التشخيصات / الاسترداد بشكل مثالي على
let
أيضًا.أظن أنه يمكننا حتى تنفيذ هذا الاسترداد كـ "tupling تلقائي" في جميع سياقات التعبير والنمط.