Type-driven development в Rust, часть 3/5: цепочка проверок и порядок событий в типах — от эксперта F6.
Продолжаем серию о type-driven development в Rust. Во второй части типы описывали контракты между компонентами. В третьей разработчик MXDR F6 Никита Тимофеенко разбирает прием заявки на стороне биржи: перед стаканом ее ждет цепочка проверок, и состав этой цепочки записывается в тип, чтобы шлюз без обязательной проверки не компилировался, а непроверенная заявка не доходила до стакана.
В третьем материале — три механизма:
▪️ type-level lists (HList);
▪️ compile-time validators;
▪️ event sourcing.
Эксперт разобрал каждый по схеме:
проблема ➡️ решение ➡️ хорошие практики ➡️ как это используют известные крейты.
Отдельно — что типы здесь не проверяют: реплей журнала, который пришел извне, всё равно сверяется в рантайме, и где именно проходит эта граница.
Примеры во всей серии — из биржевой торговли, но сами приемы работают в любом домене со сложными состояниями и правилами их изменения.
ЧИТАТЬ НА HABR
Post #4416
1.03K

- 👍 9
- 🔥 6
- ❤ 5
- 👏 3
- 😁 2