⚡️ Type-driven development в Rust, часть 2/5: контракты между компонентами — от эксперта F6. Продолжаем серию о type-driven development в Rust. В первой части типы отвечали за данные: какие значения возможны и какие комбинации допустимы. Во второй разработчик MXDR F6 Никита Тимофеенко разбирает контракты между компонентами: как записать их в типах, чтобы нарушение контракта не компилировалось. Во втором материале — три механизма: ▪️ traits; ▪️ associated types; ▪️ const generics. Эксперт разобрал каждый по схеме: проблема ➡️ решение ➡️ хорошие практики ➡️ как это используют известные крейты или std библиотека. Отдельно — CGP (Context-Generic Programming): что делать, когда одному типу нужно несколько реализаций одного трейта, а правило когерентности разрешает одну. Примеры во всей серии — из биржевой торговли, но сами приёмы работают в любом домене со сложными состояниями и правилами их изменения. ➡️ ЧИТАТЬ НА HABR