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 veResultErrise 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.