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 AntwortenDer Bereich in einemfor
ie 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?