Anonymous
from into
Vladimir
Vladimir
Это не as
Anonymous
Anonymous
бля это не суть
Anonymous
трейт имплементирует только i32
Anonymous
но раст не может это определить
Vladimir
Ну тогда сделай чтоб трейт наследовал From<i32> или какого типа там у тебя тройка
Anonymous
это не изменит отсутствия фичи
Vladimir
но раст не может это определить
Раст и не должен, потому что какой-то Вася может в своей либе реализовать трейт для своего типа, ты об этом не знаешь, но код сломается
Vladimir
Это тебе не шаблоны с++ где все разруливается на месте
Anonymous
но это же конкретный кейс когда разруливается (но всегда ошибка)
Anonymous
вообще какой-нибудь трейт PrimitiveCast<Self, To> в std по-сути мог бы быть?
Vladimir
Ещё раз, Раст не гадает на картах. Типаж это ограничение, ты задаешь ограничения на входные параметры, и используешь потом только эти ограничения. Не для каждого возможного типа реализующего типаж есть as
Anonymous
ни для какого
Vladimir
Anonymous
что значит "зачем"
Anonymous
я про возможность существования а не нужду в таковом
Vladimir
В вселенной где в СТД либу бы пихали лефтпады на все случаи жизни мог бы существовать PrimiticeCast<T> для такого, но мы, к счастью, живём не в этом мире
Alexey
нубский вопрос: traits в Rust это что-то вроде typeclasses из Haskell'я?
Anonymous
Anonymous
Alexey
спасибо
Vladimir
Anonymous
че
Vladimir
Ты говоришь, что Self как тайп параметр - не явен
Anonymous
имплицитен и не явно передается
Anonymous
какая-то попытка придраться к терминологии
Anonymous
нету
Anonymous
просто написал минимальный пример
Cuno
ну по примеру не понятно зачем эта фича вообще нужна
Маjко
В чем проблема их перевезти с собой?
Сережа
вы сначала определитесь, куда, а потом уже решайте в чем проблема
Andrew
О, ёлку после рождества кто-то выкинул
Safort
Не был в чате около двух недель. Раст по прежнему игрушечный?
Anonymous
да
Vladimir
Safort
Так да или нет? :/
Vladimir
https://www.reddit.com/r/rust/comments/7lu6di/mrustc_alternate_rust_compiler_in_c_now_broken/
Vladimir
Раст теперь может скомпилить с фичей ub
Safort
Vladimir
Нет же, какие игрушки тут
Vladimir
Тут ентрерпрайз
Anonymous
сломать его тривиально же
Vladimir
Vladimir
Прям как с++
Loyd
Loyd
Safort
Sergey
Alexey
"Типаж" называется
это что же, значит и в плюсах есть типажи? ибо в шаблонном программировании всякое называеют trait'ами.
Sergey
Anonymous
fn main() {
break rust;
}
Loyd
Loyd
Но вообще, в крестах концепты
Anonymous
причем здесь концепты 🤔
Loyd
Эм. Что значит "причём"?
Alexey
коньцептов пока что нету.
Loyd
Это да. Опять не включили
Loyd
Так что раст чуток ещё поживёт
Alexey
а так.. вот вам traits: https://erdani.com/publications/traits.html
Alexey
https://accu.org/index.php/journals/442
Vladimir
причем здесь концепты 🤔
Концепты ту же роль что и типажи выполняют, заставляют обобщенныц тип следовать каким-то правилам.
Сережа
в C++ есть CRTP на котором ваши трейты еще в 98 реализовывали
Loyd
Ignat
Я ведь правильно понимаю, что концепты просто избавляют от синтаксических хаков уровня SFINAE, но всё ещё не умеют ни выводиться, ни чекаться на достаточность?
Loyd
Когда мы говорим про типажи, это всегда два пункта: (а) ограничения, (б) особая статическая диспетчеризация.
Loyd
Первое заменяется на интерфейсы. Второе (частично) на явные вызовы функций
Сережа
боком раздувания бинарника и генерирования кода для каждого случая
Сережа
а я думал типаж, это поведение которое можно добавить типу, а типаж и миксин не одно и то же?
Loyd
Сережа
а где это написано?
Loyd
Миксин становится частью контруируемого объекта, и диспетчеризация будет соответственная (динамическая, через vtable какой-то)
Сережа
в расте есть генерики, как в расте CRTP сделать?
Сережа
наследования то нету
Anonymous
crtp?