172 похожих чатов

Как работает мономорфизация методов, которые используют трейты? Вот допустим, что у

меня есть Vec<T>, на котором определены куча методов.
Все они уже скомпилированы в бинарь и лежать под боком у rustc.
У меня есть тип Foo, на котором реализован типаж Ord, и я вызываю на Vec<Foo> метод .sort().
Внутри себя сорту нужно вызвать соответствующую реализацию .cmp()
Вопрос: откуда сорт в уже скомпиленном бинаре std знает, где именно лежит нужная cmp()? (Т.е. по какому адресу нужно прыгать?)

Вроде бы, растбук утверждает, что dynamic dispatch здесь не используется.

9 ответов

26 просмотров

vtable?

Eugene- Автор вопроса
xor eax, eax
vtable?

Т.е. static dispatch через vtable?

Так ведь где лежит cmp известно для Foo

Eugene- Автор вопроса

Это на примерно на уровне HIR происходит,и мне понятно. Мне непонятно, что происходит при кодгене -- как адреса методов узнать и в уже скомпиленный крейт положить?

Eugene
Это на примерно на уровне HIR происходит,и мне пон...

Баунд это буквально ограничения на типы, где перечислены методы и прочее. Компилятор находит нужный impl блок для типа Foo и оттуда получает функцию

Для генериков компилятор автоматически экспортирует что-то вроде C++ хидера. В итоге код сортировки будет скомпилирован в машинный код в твоей единице трансляции, а не в STD.

Eugene- Автор вопроса

А какое из? HIR или MIR?

Похожие вопросы

Обсуждают сегодня

У меня это всегда вопрос вызывало.. Нафига писать код так, чтобы потом ошибки вылавливать?
Nik
44
всем привет. реально ли понять чем в процессе занята память? delphi/linux, процесс свой
Handatros
12
что за асемблер кста?
Shvabrikk Nya
19
Добрый день! Пробую отловить исключение EConvertError: function _TryTextToDouble(var DoubleVar: Extended; Text: String): Boolean; begin try DoubleVar := StrToFloat...
Kirill Filippenok
19
embassy это топ фреймворк для эмбеддед на данный момент?
AS Sarb
23
А где @Grinyaha уважаемый пропал?
Am Ambrion
14
Ребята, я 3 дня как вкатился в ардуино Думал на прогрессивном молодом языке Rust попилить что-нибудь А как-то грустно с библиотеками оказалось. Не подскажете почему так? Если...
AS Sarb
18
This automated cryptocurrency trading system uses intelligent algorithms to buy low and sell high on leading crypto exchanges. Many users have already enjoyed significant prof...
Endu Wako
1
Сделал краткий обзор магазина из статьи и заодно там же записал инструкцию по развёртыванию. https://www.youtube.com/watch?v=8-sE1vNk95Q (чё думаете по звуку? кое-что поменял...
Andrey K
17
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Карта сайта