m12-lifecycle
Projektuj cykl życia zasobów: od inicjalizacji przez użycie do czyszczenia
Instalacja
Wybierz klienta i sklonuj repozytorium do odpowiedniego katalogu skilli.
Instalacja
O skillu
Skill do projektowania cykli życia zasobów w Rust. Nauczy Cię wzorców RAII, leniwej inicjalizacji, pul połączeń i czyszczenia zasobów. Dowiesz się, kiedy tworzyć zasoby, jak zarządzać ich zakresem, co robić przy błędach i jak implementować guard patterns. Idealne do projektowania bezpiecznego zarządzania połączeniami bazodanowymi, sesjami i innymi drogimi zasobami.
Jak używać
Zainstaluj skill m12-lifecycle z repozytorium actionbook/rust-skills. Skill nie jest bezpośrednio wywoływalny — służy jako materiał referencyjny do projektowania.
Zanim zaczniesz implementować zarządzanie zasobami, odpowiedz sobie na trzy kluczowe pytania: Jaki jest koszt zasobu (tani czy drogi)? Jaki jest jego zakres (lokalna funkcja, żądanie HTTP, cała aplikacja)? Co powinno się stać przy błędzie?
Wybierz odpowiedni wzorzec na podstawie odpowiedzi: dla taniej inicjalizacji użyj zwykłej alokacji na stosie, dla drogich zasobów rozważ pulę (r2d2, deadpool) lub leniwą inicjalizację (OnceLock, LazyLock), dla transakcji zaprojektuj custom struct z implementacją Drop.
Zaimplementuj trait Drop dla zasobów wymagających czyszczenia. Trait Drop gwarantuje, że kod czyszczący wykona się automatycznie, nawet gdy dojdzie do błędu — to jest sedno wzorca RAII.
Dla zasobów wymagających dostępu w ograniczonym zakresie (np. blokady mutex) użyj guard pattern — struktura guard automatycznie zwolni zasób, gdy wyjdzie poza zakres.
Jeśli czyszczenie może się nie powieść, nie polegaj wyłącznie na Drop — zamiast tego zaimplementuj jawną metodę close() zwracającą Result, którą możesz obsłużyć w kodzie.