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

Есть какая-то гарания, что компилятор не дропнет/уберет неиспользуемый аргумент ф-ии? Именно

как аргумент функции, понятно что всякие let _guard = mtx.lock() убирать он врядли будет


fn test(_arg: Type) {}

12 ответов

23 просмотра

Компилятор гарантирует что все аргументы будут мувнуты в функцию вне зависимости от их использования.

Артем-Пятницкий Автор вопроса
Jøhn Đøꝩsøn
Компилятор гарантирует что все аргументы будут мув...

Но они доживут до конца функции или же нет? Очевидный ответ - да, доживут, но мало ли какие там оптимизации

Артем Пятницкий
Но они доживут до конца функции или же нет? Очевид...

Кстати, тоже интересно, разве дроп не сразу происходит?

Yuriy Zymlex
Кстати, тоже интересно, разве дроп не сразу происх...

https://doc.rust-lang.org/stable/reference/destructors.html#scopes-of-function-parameters

Артем Пятницкий
Но они доживут до конца функции или же нет? Очевид...

Скорее всего такая функция просто заинлайнится, на аргументах вызовется дроп в основном коде и все (но не обязательно)

Артем-Пятницкий Автор вопроса
Dmytro Polunin
Скорее всего такая функция просто заинлайнится, на...

Я привел пример маленькой функции, мне это нужно в большой функции, где я хочу канал не закрывать сохранив один tx передав его в ту же функцию. Кстати про инлайнинг тоже интересный кейс, это же может очень странные эффекты создать, когда вызов какой-нибудь функции на самом деле заинлайнится и то что должно произойти при дропе аргументов не произойдет после вызова. Как-то страшнее стало жить после этого…

Артем Пятницкий
Я привел пример маленькой функции, мне это нужно в...

Дроп же гарантированно вызывается в определённом месте, почему не произойдёт?

Артем-Пятницкий Автор вопроса
Эрик
Дроп же гарантированно вызывается в определённом м...

А если инлайнинг произошел? Я просто не уверен как инлайн происходит, мб там создается скоуп

Артем-Пятницкий Автор вопроса
Lighty
Разве #[inline(never)] не поможет в данном случае ...

Я не уверен, что в расте строгие инлайн конструкции, мб компилятор может как в плюсах просто пропустить указание, надо читать Но как уже выше выяснили это не важно

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта