Rust: Kesalahan yang membingungkan saat menggunakan literal struct sebagai iterator

Dibuat pada 11 Jan 2018  ·  1Komentar  ·  Sumber: rust-lang/rust

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.)

A-diagnostics A-parser C-enhancement T-compiler

Komentar yang paling membantu

👍 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.

>Semua komentar

👍 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.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat