Przewodnik po Języku Rust Spis Treści

Mniej Elegancka Obsługa Błędów

W przypadkach kiedy jesteśmy dopiero na etapie prototypowania, prawidłowa obsługa Option czy Result może okazać się niepotrzebnie żmudna.

Zarówno Option jak i Result definiują funkcję o nazwie unwrap, służącą, jak nazwa wskazuje, do "odwijania" opakowanej przez taki typ wartości.

Takie "odwijanie" ma jednak jeden problem: jeśli nasz typ okaże się być wariantem None/Err to unwrap wywoła panic!, czyli bez ogródek zatrzyma działanie całego programu.

Następujące dwa przykłady są równoważne:

moja_opcja.unwrap()
match moja_opcja {
    Some(v) => v,
    None => panic!("miejsce na Twoją wiadomość o błędzie!"),
}

Podobnie:

moj_rezultat.unwrap()
match moj_rezultat {
    Ok(v) => v,
    Err(e) => panic!("miejsce na Twoją wiadomość o błędzie!"),
}

Bądź dobrym rustowcem i korzystaj z wyrażenia match gdzie to tylko możliwe!