let else Deyimleri

Bir deseni eşleştirip fonksiyondan geri döndürmenin yaygın durumu için let else kullanın. “else” durumu farklı olmalıdır (diverge) (return, break veya panic - bloğun sonundan çıkmak dışında her şey).

fn hex_or_die_trying(maybe_string: Option<String>) -> Result<u32, String> {
    let s = if let Some(s) = maybe_string {
        s
    } else {
        return Err(String::from("None alındı"));
    };

    let first_byte_char = if let Some(first) = s.chars().next() {
        first
    } else {
        return Err(String::from("boş dize alındı"));
    };

    let digit = if let Some(digit) = first_byte_char.to_digit(16) {
        digit
    } else {
        return Err(String::from("onaltılık bir basamak değil"));
    };

    Ok(digit)
}

fn main() {
    println!("sonuç: {:?}", hex_or_die_trying(Some(String::from("foo"))));
}
The rewritten version is:
#![allow(unused)]
fn main() {
fn hex_or_die_trying(maybe_string: Option<String>) -> Result<u32, String> {
    let Some(s) = maybe_string else {
        return Err(String::from("None alındı"));
    };

    let Some(first_byte_char) = s.chars().next() else {
        return Err(String::from("boş dize alındı"));
    };

    let Some(digit) = first_byte_char.to_digit(16) else {
        return Err(String::from("onaltılık bir basamak değil"));
    };

    Ok(digit)
}
}

Daha Fazlasını Keşfedin

  • Bu erken geri döndürme tabanlı kontrol akışı (early return-based control flow), Rust hata işleme (error handling) kodunda yaygındır; burada bir Result’tan bir değer almaya çalışırsınız ve Result Err ise bir hata geri döndürürsünüz.
  • Öğrenciler sorarsa, gerçek hata işleme kodunun ? ile nasıl yazılacağını da gösterebilirsiniz.