Standardowo definiuje się jeden enum błędów na moduł lub cały crate, co skutkuje zwracaniem wariantów błędów, których funkcja nie może wygenerować.
Duże enuma błędów są sprzeczne z filozofią Rust, która korzysta z systemu typów do wyrażania wymagań i ograniczeń.
Alternatywne podejście polega na reprezentowaniu pojedynczych błędów jako struktur zamiast wariantów enuma.
Biblioteka terrors demonstruje podejście oparte na pojedynczych błędach, ale wymaga częstego użycia map_err(OneOf::broaden).
Crate error_set upraszcza definiowanie zbiorów błędów przy użyciu makr i automatycznie generuje implementacje konwersji między nimi.
Makro error_set pozwala definiować zbiory błędów oraz ich unie, a operator ? działa, gdy zbiór błędów jest podzbiorem oczekiwanego.
Dla bardziej złożonych błędów strukturalnych autor woli ręczne enumy opakowujące dla dodatkowych pól.
Inne biblioteki, takie jak SmartErr, oraz eksperymentalne atrybuty makro próbują automatyzować generowanie typów błędów na podstawie ciała funkcji.
Get notified when new stories are published for "🇵🇱 Hacker News Polski"