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