Привет, подскажите, безопасен ли след. код, если я уверен что

ссылка будет жить до завершения процесса?

https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=b19b23eaeaa1081d183d70fdfd0d6eca

19 ответов

24 просмотра

Да

Если приходиться использовать transmute для изменения срока жизни на ststic, значит что то в программе неправильно, и это можно выполнить без static

Нет

A-A Автор вопроса
A A
Почему?

Потому что ничто не мешает дропнуть v и словить УБ

A-A Автор вопроса
Jøhn Đøꝩsøn
Потому что ничто не мешает дропнуть v и словить УБ

А если я уверен что v живет до завершения процесса?

A A
А если я уверен что v живет до завершения процесса...

Лучше доказать это компилятору сейфовыми методами

A-A Автор вопроса
Jøhn Đøꝩsøn
Лучше доказать это компилятору сейфовыми методами

Не знаю как доказывать, ансейф и ffi, отрезок кода приложить не могу - слишком много выйдет

A A
А если я уверен что v живет до завершения процесса...

Если есть в наличии не ссылка, а сама штуковина на которую оно ссылается, то можно в бокс завернуть, ликнуть и сделать статическую ссылку, она по идее уже точно никуда не убежит. А наличие просто ссылки ничего не гарантирует, потом случайно в другой контейнер переложится и ссылка невалидная станет.

Тогда лучше не пытаться обмануть компилятор, а просто перейти на raw pointers. Это, как не странно, будет более безопасно, так как не будет давать ложных надежд и заставит быть начеку 😂

Пух
А точнее?

Само преобразование безопасно. Просто использование может привести к UB

Алишер Галиев
Тогда лучше не пытаться обмануть компилятор, а про...

Плохой совет, сырые указатели не содержат лайфтаймы

Антон 🇦🇲
Плохой совет, сырые указатели не содержат лайфтайм...

Вот именно. Это лучше чем обманывать компилятор и расширять время жизни. Если уверен что живет вечно, то вперёд, используй сырые указатели Он же уверен что время жизни 'static

Антон 🇦🇲
Box::leak — это не обман компилятора

Конкретно box leak нет, так как освобождения не будет. Но он то меняет время жизни конкретной ссылки, а не владеющей структуры

Алишер Галиев
Само преобразование безопасно. Просто использовани...

Но трансмутить лайфтаймы вроде само по себе не уб

Алишер Галиев
Само преобразование безопасно. Просто использовани...

было задано условие «если уверен, что будет жить до конца процесса»

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

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

Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
Ребята, всем привет. Подскажите, пожалуйста, можно ли как-то через бота понять, что этого бота добавили в группу\канал и выдали ему права администратора?
Artem Stormageddon
9
Привет всем! Почему этот код не срабатывает при добавлении или удалении пользователя из чата? bot.on('chat_member', async (ctx) => { console.log(ctx); }) bot.launch({allo...
Alexander
7
Всем привет. Не понимаю, в чём тут шутка юмора. Убирается только разрешение на send_messages. А send_media_messages остаётся. Как сделать, чтобы оба убирались? await b...
Alexander
2
Есть тут кто занимается разработкой серваков майна? Или знакомые
meow *
3
'frakturBold' => ['𝖆', '𝖇', '𝖈', '𝖉', '𝖊', '𝖋', '𝖌', '𝖍', '𝖎', '𝖏', '𝖐', '𝖑', '𝖒', '𝖓', '𝖔', '𝖕', '𝖖', '𝖗', '𝖘', '𝖙', '𝖚', '𝖛', '𝖜', '𝖝', '𝖞', '𝖟', '𝕬', '𝕭', '𝕮', '𝕯'...
Roma
4
Есть ли лимиты на кол-во вебхук по домену? Стоит в данный момент 900+ ботов и бывает бот перестает отвечать (не приходят вебхуки) 🐒 Помогает только перезапуск
ᅠ [ Кому не ответил, дублируйте ]
11
а что делать если тебя убивают на картах?
Yarik yarik kyda ti lezesh
43
Товарищи, здравствуйте Подскажите, пожалуйста, может кто-нибудь сталкивался с такой задачей Через вебапку можно сканировать qr-код, а есть ли возможность считывать nfc?
Artem Stormageddon
8
Карта сайта