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

Https://Play.Rust-Lang.Org/?Version=Stable&Mode=Debug&Edition=2021&Gist=4bedec17ac966829783723dd5cf4556a Нам не даст пронаблюдать существование невалидной ссылки после последнего использования

же

13 ответов

7 просмотров
Max-Силинг Автор вопроса

если у нас есть явный Drop, который позволяет пронаблюдать место дропа, то оно не скомпилируется

...и точно так-же may_dangle не даёт нам наблюдать невалидную ссылку ну сколько можно одно и тоже :(

Max-Силинг Автор вопроса
вафля'
...и точно так-же may_dangle не даёт нам наблюдать...

мне кажется, мы о разном ты о #[may_dangle] в стдлибе, а я о #[may_dangle] в юзеркоде

Max-Силинг Автор вопроса
Max Силинг
мне кажется, мы о разном ты о #[may_dangle] в стдл...

если у тебя у самого включена фича dropck_eyepatch, то ты можешь легко пронаблюдать невалидную ссылку на входе в drop()

Max Силинг
мне кажется, мы о разном ты о #[may_dangle] в стдл...

#[may_dangle] везде одинаковый, он требует unsafe и гарантии что ты ненаблюдаешь тип

Max-Силинг Автор вопроса
вафля'
#[may_dangle] везде одинаковый, он требует unsafe ...

кроме #[may_dangle], даже unsafe не позволяет породить невалидную ссылку без UB

Max Силинг
кроме #[may_dangle], даже unsafe не позволяет поро...

Зависит от того, рассматривается ли висячая ссылка как safety или validity invariant

Max Силинг
кроме #[may_dangle], даже unsafe не позволяет поро...

nll позволяет породить ненаблюдаемую невалидную ссылку. точно так-же как и #[may_dangle]. Единственная разница, в том, что на #[may_dangle] не работает (из-за сайд эффектов) твоя интуитивная ложь про drop() после последнего использования, всё. И с #[may_dangle] и с обычными структурами и nll у тебя технически есть невалидная ссылка, но наблюдать ты её не можешь.

Max-Силинг Автор вопроса
вафля'
nll позволяет породить ненаблюдаемую невалидную сс...

почему это ложь? ты не можешь пронаблюдать отсутствие неявного drop() после последнего использования

Потому что в расте значения умирают в конце блока, просто пока у них нет сайдэффектов в дропе, неважно где конкретно они умерли.

Max-Силинг Автор вопроса
вафля'
Потому что в расте значения умирают в конце блока,...

это нельзя пронаблюдать именно в значении «физически невозможно», а не в значении «наблюдать это — UB»

Max Силинг
это нельзя пронаблюдать именно в значении «физичес...

И? Какая разница, UB by definition физически невозможно.

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта