Маjко
trait NewAtomic { default new() // runtime } static impl NewAtomic { static new() // compile-time }
Vladimir
лол
Маjко
Очень даже про то
Vladimir
ты издеваешься?
Vladimir
это ж будут две разные по сигнатуре функции
Vladimir
перегрузка ж
Vladimir
в расте такого нет
Vladimir
это не специализация
Маjко
Дааа что ты
Маjко
Давно в сигнатуру начало входить что-то кроме параметров и возвращаемого значения?
Vladimir
если это разные функции
Vladimir
то это сигнатура разная
Маjко
Эм
Маjко
Если бы это было так
Маjко
То у тебя бы трейты не работали
Маjко
Как можно вызвать функцию из трейта, реализованную для разных типов
Маjко
Реализация то разная
Маjко
Функции разные
Маjко
СИгнатура одна
Маjко
Специализация — аналогично
Маjко
Сигнатура одна, трейтбаунды и реализация разные
Маjко
Ты мб с замыканиямя путаешь? Вот там да, сигнатура одна, но тип разный и не совместимый
Маjко
Ну точнее сигнатура только на вид одна
Маjко
Потому что там еще захваченные переменные
Anton
именно
Anton
у меня вообще очень много подобных "тривиальных" архитектурных вопросов, и вопросов по реализации
Anton
это в принципе довольно банальные вещи, но как это сделать в расте нихуя не понятно
Anton
также я не знаю как бы красиво заворачивать различные контексты в оболочки вьюх
Anton
вот например один из важных вопросов в gui приложении это локализация, и нужно иметь возможность эту локализщацию пробрасывать в вьюхи, если делать просто импорт функции которая создает новый контекст перевода - то она с нуля каждый раз обрабатывает все строки, если единовременно создать контекст - получается каша с инициализациями и вечными пробросками локалей в глуб каждой вьюхи из навигатора
Anton
gtk rs не имеет и десятой толики возможностей байдингов например того же gtk для python
Anton
и получается что ты делаешь костыли
Vladimir
То у тебя бы трейты не работали
Еще раз - Сигнатура функции - это то, что определяет "тип" функции. Если ты хочешь разделения на const/static, то это будет часть твоей сигнатуры, так как нужно разделение. Но тип состоит не только из сигнатуры, так например лямбды содержат свой тег, обычные функции тоже. Теперь насчет трейтов. Сигнатура под каждый тип одна, причем тут перегрузка? Теперь насчет специализации: Специализация - это способ изменить реализацию функции, для более конкретного типа. Т.е. ты не можешь специализацию задать для равнозначных вещей, к примеру impl Trait for u32 и impl Trait for i32 это реализуется без специализации
Vladimir
К тому же зачем делать такое разделение как ты описал? Если тело статик и не статик методов будет одинаково.
Vladimir
Явность как смысл жизни?
Сережа
придется на го писать
Vladimir
ну сорян, вон раст в implicity идёт
Vladimir
эргономики эти ваши
Vladimir
непонятно где лайфтаймы заканчиваются
Судзумия
да
в куте это полуше, конечно, делается — посредством сигналов
Vladimir
каким-то ивентлупом?
Судзумия
а как эти сигналы хендлятся
Да, ивентлупом в куте. А слоты привязаны к слотам
Судзумия
Хотя вру
Vladimir
т.е. по сути переход к динамической диспетчерезации
Судзумия
Ивентлупом подписка слотов на сигналы делается
Vladimir
с статической, но не валидированной
Судзумия
а сигналы напрямую слоты вызывают через куте
Vladimir
ну если напрямую
Vladimir
тогда не понятно в чем разница
Vladimir
тот же колбек
Anonymous
как такое сделать на расте?
Влод
специализация темплейтов - редкая штука
Влод
ну на макросах наверное это легко, но ты ведь не про макросы спрашиваешь?
Anonymous
разве на макрокомандах можно в компайл тайме проверить?
Anonymous
кроме плагинов компилятора
Vladimir
как такое сделать на расте?
пока нет константных женериков - никак
Vladimir
ну разве что извращениями вида is_even<Four>
Vladimir
вообще мне кажется такое должен компилятор оптимизировать а не человек
Vladimir
is_even(4)
Сережа
сигналы не всегда напрямую вызывают слоты в куте
Сережа
все это работает через накостыленную рефлексию
Сережа
при соединении сигнала со слотом ты указываешь способ вызова
Сережа
если объект сигнала и объект слота принадлежат разным потокам - то рекомендуется соединять их так, чтобы они не напрямую вызывались
Сережа
да, у каждого потока может быть свой ивентлуп
Vladimir
Ну короче херня, понятно
Сережа
с куте5 есть синтаксис соединения через шаблоны, т.е. статически валидировано, если я тебя правильно понял
Cuno
Сильно сомневаюсь, что концепты в 20 будут.
Cuno
Но в Rust к 20 году const generics точно запилят
Маjко
пока нет константных женериков - никак
Подтверждаю, всё остальное уже готово https://play.rust-lang.org/?gist=f4cdf7786360b7471dd168b5f91972d3&version=nightly
Маjко
Но в Rust к 20 году const generics точно запилят
Обещают сделать топ приорити после нг
Маjко
как такое сделать на расте?
Хотя тут смысл другой, тут будет ошибка компиляции для не-четных чисел
Vladimir
концепты это короче как трайтбоунд только в шаблонах, да?
Маjко
Вроде как
Маjко
Не?
Маjко
концепты это короче как трайтбоунд только в шаблонах, да?
Похоже, да. Только мощнее и намного сложнее
Vladimir
я тоже подумал про ошибку