Installation
Pick a client and clone the repository into its skills directory.
Installation
About this skill
Guide to the AsyncDrop pattern for async cleanup in Rust. Use when working with AsyncDropGuard, implementing AsyncDrop trait, or handling async resource cleanup.
How to use
Zainstaluj skill async-drop z repozytorium cryfs w swoim projekcie Rust. Skill zawiera pełny przewodnik wzorca AsyncDrop wraz z przykładami kodu.
Gdy twój typ przechowuje zasoby wymagające asynchronicznego zamknięcia (np. połączenie sieciowe, plik, zadanie w tle), zamiast polegać na synchronicznym Drop, zaimplementuj AsyncDrop trait z metodą async_drop_impl(&mut self) -> Result<(), Self::Error>.
W funkcjach zwracających ten typ użyj AsyncDropGuard
jako wrappera. Typ będzie dostępny przez Deref, ale wymaga jawnego wywołania async_drop().await przed upuszczeniem. Dla automatycznego czyszczenia na wyjściu ze scope'u użyj makra with_async_drop_2!. Otocz kod zasobu tym makrem — automatycznie wywoła async_drop() przy zakończeniu bloku, niezależnie od wyniku.
Pamiętaj o kluczowych zasadach: zawsze wywołuj async_drop() na AsyncDropGuard (chyba że dojdzie do paniki), fabryki powinny zwracać guardy zamiast zwykłych wartości, a typy zawierające guardy powinny delegować do ich async_drops w swojej implementacji AsyncDrop.
Zapoznaj się z dokumentacją patterns.md i gotchas.md w skill'u, aby poznać typowe błędy i zaawansowane wzorce implementacji.