Loyd
Ты точно понимаешь, что такое &str?
Loyd
Ты можешь сказать мне, как оно выглядит
Loyd
А потом скажи, как выглядит &u8
Loyd
Вот прям на уровне байтов
Vladimir
Ты точно понимаешь, что такое &str?
в отличии от тебя понимаю
Loyd
Лол.
Vladimir
еще раз, я пользуюсь утиной типизацией "если что-то выглядит как тип и используется как тип, то скорее всего это тип"
Евгений
Дай мне определение типа и типажа
Типаж это тип первого уровня сорта констрейнт, "тип" -- сорта "типы", у них слегка разные алгебраические свойства
Vladimir
ты же говоришь, что типаж некая магическая сущность
Vladimir
говорил)
Loyd
создай мне str
Что-то пропустил я этот коммент
Евгений
Но так, конечно, на уровне теории типов типаж и типы это разновидность единой сущности
Anonymous
как типаж по английски?
Loyd
Box<str> сойдёт?
Vladimir
Box<str> сойдёт?
тогда я тебе также могу создать Box<Trait>
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
По-твоему, &T это толстый указатель?
если он ссылается на unsized тип
Vladimir
у Unsized типов, размер известен только на этапе выполнения, соответственно он должен где-то храниться, чтобы "рантайм" мог производить операции над этим типом.
Loyd
Ладно, похрен, пусть будет толстый указатель (без unsafe я не могу придумать, как создать unsized, чтобы там не было длины). Пусть так
Loyd
То есть толстый указатель и там есть, как ты сказал, начало и длина
Loyd
А как выглядит trait-object?
Евгений
Хм. Это где ты такое видел?
В работах Зюльмана же
Евгений
https://arxiv.org/pdf/cs/0006034.pdf
Vladimir
ну это не обязательно может быть "длина"
Vladimir
это должны быть данные для того, чтобы восстановить длину
Loyd
В работах Зюльмана же
А в работах Пирса это вот разные вещи
Loyd
Но гляну, спасибо
Loyd
это должны быть данные для того, чтобы восстановить длину
И как это vtable или data восстанавливает длину?
Vladimir
И как это vtable или data восстанавливает длину?
ну изучи толстый указатель раста, его втейбл, че ты ко мне с такими вопросами?
Евгений
что за сущность?
higher order types же
Anonymous
оо
Loyd
Хера мы бы просрались в производительности
Маjко
Еее, срачи о расте
Маjко
Дождались
Маjко
0 дней без срачей о расте
Маjко
@LooMaclin это надо пинить, ящитаю
Anonymous
Евгений
То есть в &str, по-твоему, втейбл?
Мне кажется, что указатели на ансайзед это синтаксический сахар своебразный
Евгений
order = kind?
kind == это second-order type
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 это тип