m05-type-driven
CRITICAL: Use for type-driven design. Triggers: type state, PhantomData, newtype, marker trait, builder pattern, make invalid states unrepresentable, compile-time validation, sealed trait, ZST, 类型状态, 新类型模式, 类型驱动设计
Installation
Pick a client and clone the repository into its skills directory.
Installation
About this skill
CRITICAL: Use for type-driven design. Triggers: type state, PhantomData, newtype, marker trait, builder pattern, make invalid states unrepresentable, compile-time validation, sealed trait, ZST, 类型状态, 新类型模式, 类型驱动设计
How to use
Zainstaluj skill m05-type-driven z repozytorium actionbook/rust-skills jako referencję do projektowania typów.
Gdy napotykasz problem wymagający walidacji (np. format e-maila, zakres liczby, stan obiektu), zamiast dodawać kontrolę runtime, zadaj sobie pytanie: czy typ może zakodować to ograniczenie?
Dla każdego wariantu problemu sprawdź tabelę wzorców w README — jeśli masz obsesję na primitywy ("to tylko string"), flagi logiczne lub wszędzie Optional, skill podpowiada, jak zamienić to w typy.
Zastosuj odpowiedni wzorzec: newtype dla wartości semantycznych, type state pattern dla przejść między stanami, builder pattern dla złożonych konstruktorów, sealed trait do ograniczenia implementacji.
Jeśli projekt typów pozostaje niejasny, skorzystaj z wskazówki "Trace Up" — przejdź do skill m09-domain, aby zdefiniować model domeny i prawidłowe przejścia stanów.
Weryfikuj, że kompilator teraz odrzuca nieprawidłowe stany — jeśli kod się kompiluje, invarianty są gwarantowane bez testów runtime.