Продолжаем серию о type-driven development в Rust. В первой части типы отвечали за данные: какие значения возможны и какие комбинации допустимы. Во второй разработчик MXDR F6 Никита Тимофеенко разбирает контракты между компонентами: как записать их в типах, чтобы нарушение контракта не компилировалось.
Во втором материале — три механизма:
Эксперт разобрал каждый по схеме:
проблема
Отдельно — CGP (Context-Generic Programming): что делать, когда одному типу нужно несколько реализаций одного трейта, а правило когерентности разрешает одну.
Примеры во всей серии — из биржевой торговли, но сами приёмы работают в любом домене со сложными состояниями и правилами их изменения.




