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!