Anonymous
нельзя сделать чтобы он имплицитно превращался?
Anonymous
да
Anonymous
смысл в ней
Anonymous
мой вопрос остается
Loo
LooMaclin/derive-newtype-deref: Autogeneration dereference trait implentation for newtype structs https://github.com/LooMaclin/derive-newtype-deref
Vladimir
значит и о вариантности нет смысла говорить
Но когда речь про коллекции, то такой кастинг требует поддержки от языка подтипов. Но, с текущими возможностями ты можешь сделать лейзи врапера который будет менять тип хештаблицы как-то, тем самым таблицу пересоберать не надо будет
Loo
LooMaclin/derive-newtype-deref: Autogeneration dereference trait implentation for newtype structs https://github.com/LooMaclin/derive-newtype-deref
Вот автогенерлка дерефов для ньютайпов - как показала практика ПОЛНОЕ ГАВНО
Vladimir
Лол
Vladimir
Сделал бы уже автовывод трейтов
Vladimir
Был бы мужиком
Loo
А то что выше я скидывал генерит to_%inner_type_name% и as_%inner_type_nsme%
Loo
Сделал бы уже автовывод трейтов
Есть старые крейты которые через макросы это делали, щас не работают, а мне пока лень делать
Vladimir
Может есть в каком-то derivative
Vladimir
https://crates.io/search?q=Newtype
Vladimir
Два первых вот про это
A64m
который естественно, ничего кроме смены типа не делает, потому что представление-то одинаковое
Marat
А зачем нужны новые типы, кроме конечно реализации нереализованных трейтов
A64m
для того чтоб проверять что-то
A64m
тайпчекером
Alexey
А зачем нужны новые типы, кроме конечно реализации нереализованных трейтов
Заучит примерно как "зачем нужна статическая типизация кроме помощи компилятору в оптимизации программы?"
Vladimir
Что значит поддержка подтипов не нужна? Она нужна чтобы сейфово это делать
A64m
Transmute в помощь
как он тут поможет?
A64m
требуется поддержка некоей эквивалентности типов, которая по их представлению в памяти определяется
A64m
это не то же самое что и сабтайпинг
Vladimir
как он тут поможет?
Ну ты скорее всего сможешь сделать transmute::<HashMap<u32, A>, HashMap<A,u32>>(hm)
Vladimir
По размеру в памяти
A64m
по эквивалентности их параметров
Vladimir
Вот
Vladimir
Это и есть ковариантность
Vladimir
Не?
Vladimir
Когда тип зависит от параметров
A64m
но трансмьют же этого не проверяет, он просто кастит, не безопасен
Vladimir
Да, он по размеру в байтах типа
Vladimir
А я тебе говорю, что ковариантность без subtypingа не возможна
Vladimir
Ну или я покрайней мере не понимаю как ты это видишь
Vladimir
Но в данном случае трансмьют будет работать
Vladimir
При условии что хеш структуры равен хешу внутренностей
A64m
ну надо еще такое средство, которое будет проверять безопасно ли трансмьют употребляется
Vladimir
Вариантность?)
A64m
это проще чем вариантность, вариантность позволяет делать такие касты для объектов которые представлены по разному в памяти
Loo
https://crates.io/search?q=Newtype
Последний раз когда пытался юзать оно отказывалось компилиться с другими кастомными дерайвами
Мерль
Бороучекер это фича времени компиляции, как она может аффектить кеш вообще, или любой другой рантайм
Ну как бы если у нас есть только одно место, откуда модифицируется участок памяти, то чисто гипотетически это может приводить к тому, что у нас будет меньше переключения между состояними в кэше
Мерль
И разве суть борроу чекера разве как раз не в том, что он убирает часть возможных состояний в рантайме (дата рейсы в частности)?
Alexey
то есть, в теории, статистически растапроги могут быть быстрее плюсатых не потому, что компилятор оптимизирует лучше, или там накладных расходов меньше, а просто потому, что бороучекер заставляет иначе программы организовывать и с данными работать?
Alexey
а в плюсатых каждый городить кто во что горазд?
Alexey
Да, я понял что это гипотеза пока что
Vladimir
Тут от алгоритма зависит а не реализации и яп
Vladimir
Разве что в расте пишут частично в функциональном стиле и этот подход может быть хорош для ряда задач
strcpy
у раста имхо главная фича это обещанная безопасность в многозадачности, но и бонусы обычных современных языков: менеджер пакетов, эксепшены
Anonymous
эксепшены
Anonymous
🤔
strcpy
использую вижуалстудию сечас — это просто ад, когда надо искать по интернету компоненты, их копипастить в проект, фиксить варнинги руками, а потом в релизе грохнется — и ты незнаешь где
strcpy
я имел ввиду стэк трэйсы конечно
Alexey
А может быть и плох. Лишние копирования туда-сюда, вместо модификации чего-то инплейс.
Alexey
ну, unwinded-паники вполне себе ексепшины. кинуть можно, перехватить можно, деструкторы вызываются. чего еще надо то?
strcpy
это я про плюсы
Alexey
это я про плюсы
винда с вижуалстудией вообще довольно неудобная штука для разработки. особенно для плюсов.
strcpy
есть проблемы на уровне языка с++, раст вполне тянет на киллера, то надо его упрощать мне кажется
Alexey
но, насколько я помню, трейсы там как-то вроде можно включить и даже недокорки генерить. но для этого нужно специально поприсядать конечно.
strcpy
ну да, начать кодить довольно тяжело
Alexey
не тяжелее чем на плюсах. IMHO. особенно после плюсов
Alexey
А у раста есть какой-нибудь рекомендованный кодингстайл? ну и тулзы аля автоформат под этот стайл и чекер.
Anonymous
rustfmt
Alexey
отступы принято табами? фигурные скобочки только с новой строчки?
strcpy
там вроде можно конфигурировать
Alexey
Ну, не очевидно же. Где про это прочитать? Как принято то?
strcpy
но мне не удалось прикрутить к vscode — там все на соплях пока