Size: a a a

2021 April 17

s

suhr in rust_offtopic
Первая.
источник

EG

Emmanuel Goldstein in rust_offtopic
Сколько хочешь
Функция не производит UB, пока не вызвана
источник

EG

Emmanuel Goldstein in rust_offtopic
Если функцию нельзя вызвать, она никогда не производит UB => она sound
источник

EG

Emmanuel Goldstein in rust_offtopic
Со мной согласен и Номикон, и Ральф, ссылки были выше.
источник

p

polunin.ai in rust_offtopic
То есть если я к себе в крейт скопирую код другого крейта он автоматически становится приватным и я могу там менять ансейф на сейф и все заебись?
источник

p

polunin.ai in rust_offtopic
Снаружи не торчит
источник

p

polunin.ai in rust_offtopic
Какой-то Vec скопирую
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
это какая-то плюсовая логика почему темплейты лучше генериков
источник

EG

Emmanuel Goldstein in rust_offtopic
Да, если вызывая публичные безопасные функции, ты не можешь достичь UB.
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
контекстом безопасности функции должна быть сама функция а не то как она используется
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
то есть НЕ ЗНАЯ вызываетяс функция или нет ты должен сказать - сейф она или нет
источник

EG

Emmanuel Goldstein in rust_offtopic
Любой нетривиальный unsafe расчитывает на то, что весь остальной модуль работает правильно
источник

p

polunin.ai in rust_offtopic
Тогда мы приходим к выводу что помечать функции как ансейф не надо, хз
источник

p

polunin.ai in rust_offtopic
Толку то
источник

p

polunin.ai in rust_offtopic
Все гарантии напишешь в документации, все равно публичная функция же
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
не должно такого по возможности происходить. Мир неидеален, но когда можно инкапсулировать это в функции - это надо делать
источник

EG

Emmanuel Goldstein in rust_offtopic
Возьмём, например, Vec::push. Он расчитывает на то, что указатель внутри Vec — валидный либо нулевой.
источник

EG

Emmanuel Goldstein in rust_offtopic
Но другая функция внутри того же модуля, даже сейфовая, может сломать этот инвариант.
источник

EG

Emmanuel Goldstein in rust_offtopic
Тем не менее, Vec::push безопасный, потому что граница безопасности проходит по модулю
источник

p

polunin.ai in rust_offtopic
Этосовсем другой пример
источник