низкомолекулярный макрос, rust мне нравится, что в итоге его код выглядит сравнительно высокоуровнего (по сравнению с Си).
Часто компилятор даже в экстремальных ситуациях может навести на мысль, как исправить ошибку.
При этом если в коде нет unsafe и код скомпилировался - он безопасен по памяти.
Это почему "да".
Почему "нет":
- В сложных программах можно будет увидеть вот такие ошибки:
- Нужно будет долго разбираться что за borrow checker, lifetime elision, как работать с трейтами, и как работает всякий синтаксический сахар (например проброс ошибок вверх через ?), как работать с женериками.
низкомолекулярный макрос, ну там я попытался сделать калькулятор, который определяет "силу" руки в процентах (в какой-то игре видел. В far cry 3 вроде). Но довёл только до состояния "можно определить, что за комбинация в принципе".
Тогда я не очень шарил в расте и код может быть не очень чистый. Ну и версия там 2018 - она немного отличается от актуальной.
Это тот самый вопрос, на который я ответить не смог :)
По идее - убиранием из колоды известных карт и перебором всех возможных комбинаций, и опредлением, сколько процентов комбинаций ты сможешь побить своей рукой, а сколько смогут побить тебя. Это и будет "сила руки"
Более эффективного алгоритма придумать не смог, но и такой не реализовал.
В теории тут надо сделать 1906884 сравнений рук.
В теории их можно заранее всех просчитать и проиндексировать - выйдет пара мегабайт.
Так и можно будет определять силу руки, найдя её позицию в таком индексе
Сравнивая возможную комбинацию у себя и у соперника?
Эта возможность есть - в моём коде есть функция, которая определяет, какая из двух рук сильнее (реализацией трейта PartialOrd и PartialEq)