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

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

же

13 ответов

2 просмотра
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 физически невозможно.

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

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

ого, прикольно, а что пишешь?
CodWiz | Серёжа by CodWiz
32
А что за прикол,типа тут я никого не найду получается?
🥀
17
а почему бы не поведать миру эти дополнения, сделав их по сути стандартными для ide ?
Mixail Frolov
26
А как ребята типа теле2 зашли? У них же пополнение баланса моментальное
Alexandr Dubickiy
22
Хочу поинтересоваться,для кого-то сейчас актуально изучение языков? Поделюсь материалами по иностранным языкам.
Дима
12
Здравствуйте. Какое условие необходимо, что бы приложение скомпилированное лазарусом в ubuntu запускалось на astra linux?
Эдуард Щербаков
21
Нужно найти номер позиции, с которой начинается подстрока S2 в строке S1. lea di, s1 ;Строка lea si, s2 Подстрока again: mov al, [si] mov ah, 02 ...
Ыиу
11
Выиграл лотерейные билеты (во взрослую жизнь), где обменивать на игрушки?
Magic
8
Привет Вам, Гуру вапора Смею обратиться с вопросом, по какой причине не сохраняются куки через request.client.send(get) и urlsession? Опишу чуть точнее: - есть первый запрос, ...
Alexander Orlov
10
.model small .stack 100h .data x db ? y db ? equation db 10, 5, -20 result db ? .code main proc mov ax, @data mov ds, ax ; Ввод координат x и y ...
Mr Beast
1
Карта сайта