Ну и ладно, за то теперь знаю про Either и фантомдата)
А если таким образом это все сделать https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=c9a342f7bb45946c55c041d13a96bc1b
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=9d49604398fafe68c2ffb8f5c7d88af6
Получается, худший из вариантов😕
На мой взгляд - динамика в таких кейсах проигрывает статике. Бывают супер сложные инварианты которые доказывать замучаешься, а в рантайме просто один ифчик - тут скрепя сердце можно позволить себе отойти с тропы света. В остальных случаях наверное не стоит. Конечный автомат это идеальный пример когда типы помогают без особых минусов. Невозможность написать невалидную программу - бесценна. Алсо статья на тему, рекомендую: https://geeklaunch.io/blog/make-invalid-states-unrepresentable/
Спасибо за помощь, прочитаю
Обсуждают сегодня