Literal out of range warning beim Durchlaufen aller Werte von u8 [duplicate]

Diese Frage hat hier bereits eine Antwort:

Wie man über alle Bytewerte iteriert (überlaufende_Literale in `0..256`) 2 Antworten

Der Bereich in einemforie ich verstehe, ist @ -loop eine Untergrenze einschließlich und eine Obergrenze ausschließlich. Dies führt zu einem Problem im folgenden Code:

fn main() {
    let a: u8 = 4;

    for num in 0..256 {
        if num == a {
            println!("match found");
            break;
        }
    }
}

Ich möchte eine 256-malige Schleife von 0 bis 255 ausführen, und dies passt in den Datenbereich, der von @ unterstützt wiru8. Da der Bereich exklusiv die obere Grenze ist, muss ich 256 als Grenze für den Prozess 255 angeben. Aus diesem Grund gibt der Compiler die folgende Warnung aus.

warning: literal out of range for u8
 --> src/main.rs:4:19
  |
4 |     for num in 0..256 {
  |                   ^^^
  |
  = note: #[warn(overflowing_literals)] on by default

Wenn ich das ausführe, überspringt das Programm dasfor loop.

Meiner Meinung nach muss der Compiler 256 im Bereich ignorieren und den Bereich als @ akzeptieru8 Angebot. Ist es richtig? Gibt es eine andere Möglichkeit, den Bereich anzugeben?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage