0Pricing
Learn Rust Coding · Lektion

if let und while let

Kompaktes Pattern Matching

if let und while let ist eine kostenlose Learn Rust Coding-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Learn Rust Coding-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Learn Rust Coding-Kurs umfasst insgesamt 4 Lektionen.

Kompaktes Abgleichen

Manchmal ist nur ein einziges Muster relevant. if let und while let ermöglichen ein kompaktes Abgleichen ohne vollständiges match.

Die if-let-Form

if let führt einen Block nur aus, wenn ein Wert zu einem Muster passt, und bindet dabei erfasste Daten.

fn main() {
    let maybe = Some(10);
    if let Some(n) = maybe {
        println!("value is {n}");
    }
}

if let im Vergleich zu match

if let ist syntaktischer Zucker für ein match mit einem interessanten Arm und einem _ => ()-Fallthrough. Verwenden Sie es, wenn die anderen Fälle nicht behandelt werden müssen.

fn main() {
    let config: Option<i32> = None;
    // match equivalent would have an empty _ arm
    if let Some(v) = config {
        println!("configured: {v}");
    }
    println!("done");
}

Ein else hinzufügen

Fügen Sie ein else hinzu, um den Fall ohne Übereinstimmung zu behandeln.

fn main() {
    let result: Result<i32, String> = Err("boom".to_string());
    if let Ok(v) = result {
        println!("ok: {v}");
    } else {
        println!("failed");
    }
}

let else

let ... else bindet Werte, wenn das Muster passt, und führt andernfalls einen divergierenden Block aus (z. B. return). Das eignet sich hervorragend für frühe Ausstiege.

fn parse(s: &str) -> i32 {
    let Ok(n) = s.parse::<i32>() else {
        println!("not a number");
        return 0;
    };
    n * 2
}

fn main() {
    println!("{}", parse("21"));
    println!("{}", parse("oops"));
}

Die while-let-Form

while let wiederholt die Schleife, solange ein Wert zu einem Muster passt. Das ist ideal, um beispielsweise Stacks zu leeren.

fn main() {
    let mut stack = vec![1, 2, 3];
    while let Some(top) = stack.pop() {
        println!("popped {top}");
    }
}

Über Iteratoren iterieren

while let kann iterieren, indem wiederholt next aufgerufen wird. Die Schleife endet, wenn None zurückgegeben wird.

fn main() {
    let mut iter = [10, 20, 30].into_iter();
    while let Some(x) = iter.next() {
        println!("{x}");
    }
}

Guards mit if let

Kombinieren Sie einen Guard, indem Sie eine &&-Bedingung (Rust 2024) hinzufügen oder ein if verschachteln.

fn main() {
    let value = Some(8);
    if let Some(n) = value {
        if n > 5 {
            println!("big: {n}");
        }
    }
}

Welche Form wann verwenden

Richtlinien:

  • if let – ein Muster behandeln und den Rest ignorieren
  • let else – binden oder frühzeitig abbrechen
  • while let – wiederholen, solange ein Muster passt
  • match – wenn mehrere Fälle behandelt werden müssen

Abwägung der Lesbarkeit

Diese Formen reduzieren Boilerplate-Code, können aber Fälle verbergen. Wenn Sie mehrere Muster behandeln, wechseln Sie für mehr Klarheit wieder zu einem vollständigen match.

if let verschachteln

Sie können optionale Werte durch verschachtelte if let-Ausdrücke miteinander verketten und dabei eine Ebene nach der anderen entpacken.

fn main() {
    let outer: Option<Option<i32>> = Some(Some(99));
    if let Some(inner) = outer {
        if let Some(value) = inner {
            println!("value is {value}");
        }
    }
}

Schnelltest

Welche Konstruktion führt den Schleifen-Body wiederholt aus, solange ein Wert zu einem Muster passt?

Zusammenfassung

Sie haben kompaktes Abgleichen kennengelernt:

  • if let behandelt ein einzelnes Muster, optional mit else
  • let else bindet oder bricht frühzeitig ab
  • while let wiederholt die Schleife, solange ein Muster passt
  • Wechseln Sie zu match, wenn mehrere Fälle behandelt werden müssen

Häufig gestellte Fragen

Ist die Lektion „if let und while let“ kostenlos?

Ja — der vollständige Text von „if let und while let“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Learn Rust Coding-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Learn Rust Coding-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „if let und while let“?

Kompaktes Pattern Matching Du übst Learn Rust Coding mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Learn Rust Coding zu starten?

Keine Vorkenntnisse erforderlich. Learn Rust Coding auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „if let und while let“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Learn Rust Coding-Lektion Code schreiben und ausführen?

Ja. Jede Learn Rust Coding-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. match im Detail
  2. if let und while let
  3. Binding mit @
  4. Destrukturierung
← Zurück zu Learn Rust Coding