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

12 ответов

15 просмотров

Инварианты.

Monstrous-Moonshine Автор вопроса
Эрик
Инварианты.

Ну это внутри имплементации, len же ни разу не pub.

Потому что если длинна будет больше, чем на самом деле есть элементов — можно будет прочитать не инициализированную память. А если больше чем capacity то ещё хуже

Monstrous Moonshine
Ну это внутри имплементации, len же ни разу не pub...

1) мы обсуждали теорию на счёт того, что его можно было бы сделать pub 2) из-за этого получается что unsafe распространяется по всему модулю совсем не заметно

Monstrous-Moonshine Автор вопроса
вафель 🧇🍓
Потому что если длинна будет больше, чем на самом ...

Да, теперь понял. Но это больше похоже на контракт который сложно описать правильно

Monstrous-Moonshine Автор вопроса
вафель 🧇🍓
Неописуемые контракты это и есть unsafe

Не совсем, есть семантическая разница между unsafe и unsound

Monstrous Moonshine
Да, теперь понял. Но это больше похоже на контракт...

Не особенно сложно. Просто в контрактах обычно используются ghost-переменные и -структуры данных.

Monstrous Moonshine
Не совсем, есть семантическая разница между unsafe...

Нет, unsound и unsafe — разные вещи. Unsafe часто и внутри модуля используется, даже если функция не публична, но имеет инварианты.

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

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

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
2
Карта сайта