Loyd
Ты точно понимаешь, что такое &str?
Loyd
Ты можешь сказать мне, как оно выглядит
Loyd
А потом скажи, как выглядит &u8
Loyd
Вот прям на уровне байтов
Vladimir
Loyd
Лол.
Vladimir
еще раз, я пользуюсь утиной типизацией "если что-то выглядит как тип и используется как тип, то скорее всего это тип"
Евгений
Дай мне определение типа и типажа
Типаж это тип первого уровня сорта констрейнт, "тип" -- сорта "типы", у них слегка разные алгебраические свойства
Vladimir
ты же говоришь, что типаж некая магическая сущность
Loyd
Loyd
Vladimir
говорил)
Евгений
Но так, конечно, на уровне теории типов типаж и типы это разновидность единой сущности
Anonymous
как типаж по английски?
Loyd
Box<str> сойдёт?
Vladimir
Евгений
Loyd
Vladimir
тебя же это не удовлетворяет?)
Loyd
Ну, тебя, видимо, удовлетворяет, ты же не понимаешь разницы
Vladimir
когда ты просишь создать Unsized тип, что ты ожидаешь?
Loyd
unsized ТИП
Vladimir
Он не может существовать без указателя, я тебе это с истоков долблю)
Loyd
а не типаж
Vladimir
х)
Loyd
Окей, давай иначе
Vladimir
наша песня хороша?)
Loyd
Как, по-твоему, выглядит &T, где T — unsized тип?
Vladimir
всмысле "как" ?
Anonymous
Anonymous
не знал
Loyd
Vladimir
как выглядит толстый указатель?
Vladimir
может быть представим как "начало + конец" или как "начало + размер"
Loyd
По-твоему, &T это толстый указатель?
Vladimir
в расте помоем "начало + конец"
Vladimir
Vladimir
у Unsized типов, размер известен только на этапе выполнения, соответственно он должен где-то храниться, чтобы "рантайм" мог производить операции над этим типом.
Loyd
Ладно, похрен, пусть будет толстый указатель (без unsafe я не могу придумать, как создать unsized, чтобы там не было длины). Пусть так
Loyd
То есть толстый указатель и там есть, как ты сказал, начало и длина
Loyd
А как выглядит trait-object?
Евгений
Евгений
https://arxiv.org/pdf/cs/0006034.pdf
Vladimir
ну это не обязательно может быть "длина"
Vladimir
это должны быть данные для того, чтобы восстановить длину
Loyd
Но гляну, спасибо
Loyd
Anonymous
Anonymous
оо
Loyd
Loyd
Хера мы бы просрались в производительности
Маjко
Еее, срачи о расте
Маjко
Дождались
Маjко
0 дней без срачей о расте
Маjко
@LooMaclin это надо пинить, ящитаю
Anonymous
Anonymous
окк надо почитать ту пдф
Loyd
Ну, это болтология. Можно для чего угодно ввести higher order. Хоть все сущности свести в одну, которая конструирует их
Vladimir
https://doc.rust-lang.org/beta/nomicon/exotic-sizes.html#dynamically-sized-types-dsts
Евгений
big
Друзья, криптонуб на связи. Можете ли обьяснить, есть ли смысл в использовании отечественной криптографии для критических нужд, например, для того же рублькоина? Или это все обман чтобы набрать классы?
Loyd
@c_vld https://users.rust-lang.org/t/can-we-use-impl-trait-and-impl-trait-for-trait/3335
Loyd
То есть impl Trait for Trait работает потому, что Trait так же название trait-object-а
Loyd
Конструкция всё та же: implt Trait for Type, просто среди типов есть Trait, который tarit-object
Loyd
Вообще это спорная хрень в расте, имхо. Ну, что неймспейсы для функций, модулей, переменных, типов и типажей раздельны
Loyd
Из-за чего foo() и (foo)() может быть совершенно разным результатом
Vladimir
Та я не спорю, что трейт как тип называется Trait-Object Но это не "магия компилятора" как ты это описал
Loyd
А я так нигде не писал
Vladimir
я вообще о нейминг не спорил, назови ты его хоть дирижаблем
Loyd
Но trait-object это не trait
Loyd
и отношения к нему имеет посредственное (просто правила для конструирования vtable заданы и всё)
Vladimir
Трейт-объект - в общем случае не трейт, потому что каждый трактует эти определения по своему
Vladimir
но суть в том, что Trait это тип