Einführung
In diesem Lab lernen wir, wie in Rust Match Guards verwendet werden, um Arme basierend auf Bedingungen zu filtern. Der Match Guard wird nach dem Muster hinzugefügt und wird durch das if-Schlüsselwort gefolgt von einer Bedingung dargestellt. Die Bedingung des Guards ermöglicht es uns, die Übereinstimmung von Mustern weiter zu verfeinern und zusätzliche Prüfungen durchzuführen, bevor der entsprechende Arm des Match-Ausdrucks ausgeführt wird. Es ist jedoch wichtig zu beachten, dass der Compiler die Guard-Bedingungen nicht bei der Prüfung der Musterabdeckung berücksichtigt, sodass es erforderlich ist, sicherzustellen, dass alle Muster weiterhin von dem Match-Ausdruck abgedeckt werden.
Hinweis: Wenn im Lab kein Dateiname angegeben ist, können Sie einen beliebigen Dateinamen verwenden. Beispielsweise können Sie
main.rsverwenden und es mitrustc main.rs &&./mainkompilieren und ausführen.
Guards
Ein match-Guard kann hinzugefügt werden, um den Arm zu filtern.
#[allow(dead_code)]
enum Temperature {
Celsius(i32),
Fahrenheit(i32),
}
fn main() {
let temperature = Temperature::Celsius(35);
// ^ TODO versuchen Sie verschiedene Werte für `temperature`
match temperature {
Temperature::Celsius(t) if t > 30 => println!("{}C ist über 30 Celsius", t),
// Der `if-Bedingung`-Teil ^ ist ein Guard
Temperature::Celsius(t) => println!("{}C ist unter 30 Celsius", t),
Temperature::Fahrenheit(t) if t > 86 => println!("{}F ist über 86 Fahrenheit", t),
Temperature::Fahrenheit(t) => println!("{}F ist unter 86 Fahrenheit", t),
}
}
Beachten Sie, dass der Compiler die Guard-Bedingungen nicht berücksichtigt, wenn er überprüft, ob alle Muster vom Match-Ausdruck abgedeckt werden.
fn main() {
let number: u8 = 4;
match number {
i if i == 0 => println!("Zero"),
i if i > 0 => println!("Greater than zero"),
// _ => unreachable!("Should never happen."),
// TODO ^ kommentieren Sie diese Zeile aus, um die Kompilierung zu beheben
}
}
Zusammenfassung
Herzlichen Glückwunsch! Sie haben das Guards-Lab abgeschlossen. Sie können in LabEx weitere Labs absolvieren, um Ihre Fähigkeiten zu verbessern.