Diberikan:
for foo, bar in [(1, 2), (3, 4)] {}
rustc menghasilkan:
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)] {}
| ^
…tetapi akan lebih baik jika diketahui bahwa pengguna mungkin bermaksud for (foo, bar) in ...
, dan memberikan pesan kesalahan yang lebih spesifik.
Ini mungkin kesalahan umum yang berasal dari Python, yang memiliki sintaks serupa untuk for
loop tetapi memungkinkan menghilangkan tanda kurung.
Jika ini adalah sesuatu yang terinspirasi oleh Python, maka diagnostik/pemulihan ini idealnya juga berlaku untuk let
.
let a, b = (10, 11);
=>
let (a, b) = (10, 11);
Saya menduga kita bahkan dapat mengimplementasikan pemulihan ini sebagai "auto-tupling" di semua ekspresi dan konteks pola.
illegal a, b, c
=>
(a, b, c)
:+1: Bukan hanya Python, ini juga akan membantu pengguna Go.
for k, v := range myMap {
x, err = /* ... */
}
(Saya telah membuat beberapa kemajuan dalam hal ini; PR akan datang)
Komentar yang paling membantu
Jika ini adalah sesuatu yang terinspirasi oleh Python, maka diagnostik/pemulihan ini idealnya juga berlaku untuk
let
.Saya menduga kita bahkan dapat mengimplementasikan pemulihan ini sebagai "auto-tupling" di semua ekspresi dan konteks pola.