fn main() {
for _ in std::ops::Range { start: 0, end: 10 } {}
}
// error: expected type, found `0`
// --> src/main.rs:2:39
// |
// 2 | for _ in std::ops::Range { start: 0, end: 10 } {}
// | ^ expecting a type here because of type ascription
// error[E0423]: expected value, found struct `std::ops::Range`
// --> src/main.rs:2:14
// |
// 2 | for _ in std::ops::Range { start: 0, end: 10 } {}
// | ^^^^^^^^^^^^^^^ did you mean `std::ops::Range { /* fields */ }`?
Ini membingungkan di sini, karena menyarankan menggunakan persis apa yang telah diketik pengguna. Alih-alih, itu harus menyarankan pengguna memasukkan literal struct.
(Mungkin ada alasan mengapa ini tidak diuraikan apa adanya, tetapi jika tidak, sepertinya ini kasus yang bagus untuk ditangani.)
👍 untuk meningkatkan diagnostik di sini.
Mungkin ada alasan mengapa ini tidak diuraikan apa adanya
Masalahnya adalah ketika parser melihat {
setelah Range
ia tidak tahu apakah itu struct literal atau awal dari badan loop, dan pada waktu parse ia tidak tahu bahwa Range
adalah struct, bukan konstanta.
Komentar yang paling membantu
👍 untuk meningkatkan diagnostik di sini.
Masalahnya adalah ketika parser melihat
{
setelahRange
ia tidak tahu apakah itu struct literal atau awal dari badan loop, dan pada waktu parse ia tidak tahu bahwaRange
adalah struct, bukan konstanta.