Денис
make && make install → cargo build && cargo install
Cat
вы же тут спорили и доказывали, что impl смотрится красивее, чем generic type arg
Cat
?? t.me/rustlang_ru/122840
分解物質
ну правильно, зачем кучу синтаксисов к одной вещи
Cat
но вообще я тоже плюсанул
Антон
https://github.com/rust-lang/rfcs/pull/2444
Тоже лайк поставил
Маjко
вы же тут спорили и доказывали, что impl смотрится красивее, чем generic type arg
Мы не спорили и не доказывали, мы обсуждали И пришли к тому что лучше единообразие, чем один корнер-кейс, где импл трейт красивее
Cat
eh, come on, я же шучу (про "спорили и доказывали")
Berkus
impl Debug выглядит лучше
Berkus
прямо СИЛЬНО
Berkus
всё нормально
Tuntz
тоже лайкнул
Tuntz
impl Trait для аргументов - симптом construction madness авторов языка
Tuntz
фича ради фичи потому что делать нечего и лижут себе яйца
ㅤ
Как это нечего
ㅤ
Конст женерики
պլհկ
Хули вы раньше не дислайкали
պլհկ
Пока не в стейбле было
Tuntz
так universal-impl-trait в последний момент заехало в пулл-реквест
պլհկ
Теперь поезд ушел
Tuntz
планировали только conservative-impl-trait, потом *huzzah* - будем и для аргументов тоже стабилизировать
Tuntz
это большой провал процесса общественного обсуждения RFC и PR - немаленькая фича оказалась в стейбле без широкого review зацепившись за существующий PR.
պլհկ
Я чет тоже не заметил как оно пролезло
Tuntz
потому что все обсуждали и ждали conservative-impl-trait
Tuntz
а вышло вот как
Sergey
я вот думаю, что надо регулярно смотреть на рфц
Sergey
и коварно кидать сюда
պլհկ
Толку только от лойсов
պլհկ
На них вообще обращают внимание?
Sergey
на комменты обращают точно)
Денис
разве что на развёрнутые каменты
Денис
коменты в стиле I like the idea. вряд ли обращают на себя внимание принимателей решений
Cat
На них вообще обращают внимание?
из-за них начинают гореть и создавать темы на internals что положительно сказывается на дискуссии </sarcasm>
Cat
А "корнер-кейс" это про замыкания?
замыкания в качетсве аргумента вроде и по-другому пишутся
Маjко
А "корнер-кейс" это про замыкания?
Не, там и так вывод типов атоматический
Loyd
А когда a => b => c хочется
Loyd
Ну, будет аля fn kek<F: Fn() -> impl Fn() -> u32>(f: F) работать?
Cat
по идее будет
Cat
это же не тип аргумента (тут я возможно сильно не прав) хотя хз, чё они там накрутили
Loyd
Я к тому, что в этом кейсе fn kek(f: impl Fn() -> impl Fn() -> u32) лучше смотрится
Tuntz
ну, impl Trait в позиции аргумента работает как дженерик - пользователь сам выбирает любой из 155 типов, которые вписываются в constraint
Loyd
Да, но турбофиш не работает
Маjко
Да, но турбофиш не работает
Бля, он там и не нужен
Маjко
Вашу ж мать
Loyd
Где там?
Маjко
Там где передается конкретное значение генерик типа
Маjко
Турбофиш нужен когда значение не передается
Loyd
Это если в возвращаемом, это да
Loyd
Но есть кейсы, когда указываешь явно
Маjко
fn sizeof::<T>()
Маjко
Нет
Маjко
fn sizeof::<T>()
Тут нужен турбовиш
Маjко
fn consume<T>(t: T)
Маjко
Маjко
impl Trait подходит только во втором случае
Loyd
Ну как "нет"? Возьми тот же Deref: из-за него у тебя &Kek может кучу разных ссылок принимать. Поэтому для consume<&str>(k) и consume<&Kek>( k ) ты можешь захотеть указать
Anonymous
почему 155 типов?
почему N типов?
Sergey
Маjко
почему 155 типов?
256 - 155 = количество специальных типов компилера Остаются 155 для юзера, инача u8 переполнится
Combot
combot.org/chat/-1001082778544
Loyd
Приведи пример в коде.
Вот же привёл кейс тебе.
Loyd
Или ты сказки рассказывать будешь, что ни разу из-за Deref-а не уточнял тип?
Маjко
Вот же привёл кейс тебе.
Если функция параметризована по Deref она и так автодерефнется до нужного Target
Loyd
Если у тебя какой-нибудь`Serialize` внутри, который для &str и &Kek по-разному реализован, то что ты делать будешь?