Комментарии 11
Еее, константные дженерики! Теперь можно не колхозить доступ к многомерным массивам.
дженерики становятся все мощнее, следующий шаг — HKT?
Я проголосую за поля в типажах. Это уберет мне большую часть ансейфов в проекте.
Хм. А для чего там unsafe? Это же можно реализовать с помощью методов get_field(&self) -> &Field, get_field_mut(&mut self) -> &mut Field.
Для того, чтобы заимствовать отдельные поля без блокировки всего объекта? По-моему, с текущей моделью stacked borrows это — UB. MIRI на такой код не ругается?
Для наследования. В данный момент оно реализовано вложенными структурами, как в си.
Вы так и не сказали, для чего вам наследование и чем не подходят геттеры-сеттеры
Впрочем, чего тут удивляться — в С++ вещественные и строковые параметры шаблонов сделали только в С++20 (т.е. спустя 35 лет после создания языка), да и то не до конца.
Очень простой фигни, да. 140 одних только issue про внутренние ошибки компилятора: https://github.com/rust-lang/rust/issues?page=1&q=is%3Aissue+label%3AI-ICE+label%3AA-const-generics.
В Rust безопасное подмножество языка не содержит UB по определению. Соответственно все возможности языка должны этому соответствовать.
Поэтому задача не в том, чтобы влепить фичу и объявить все «неправильные» способы применения UB, а в том, чтобы добавлять фичи в стабильное подмножество языка, которое будет консистентным и непротиворечивым и не приведет к нарушению внутренних инвариантов.
В статье идет речь о стабилизации а не о реализации. В системе типов языка есть и специализация, и отдельные элементы высших порядков, но они не доступны в стабильном подмножестве.
Rust 1.51.0: const generics MVP, новый распознаватель функциональности Cargo