Небезопасность (Unsafe)
Небезопасные операции - это те, которые потенциально могут нарушить гарантии безопасности памяти статической семантики Rust.
Следующие особенности языка не могут быть использованы в безопасном подмножестве Rust:
- Разыменование сырого указателя.
- Чтение или запись изменяемой или небезопасной внешней статической переменной.
- Доступ к полю
union, кроме как для присваивания ему.
- Вызов небезопасной функции.
- Вызов безопасной функции, помеченной
target_feature, из функции, которая не имеет атрибутаtarget_feature, включающего те же особенности (см. attributes.codegen.target_feature.safety-restrictions).
- Реализация небезопасного трейта.
- Объявление блока [
extern]1.
- Применение небезопасного атрибута к элементу.
-
До редакции 2024 года блоки extern разрешалось объявлять без
unsafe. ↩