Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Небезопасный код в Rust

В языке Rust есть две части:

  • Безопасный Rust: безопасен для памяти, неопределённое поведение невозможно.
  • Небезопасный Rust: может вызвать неопределённое поведение, если нарушены предусловия.

В этом курсе мы в основном видели безопасный Rust, но важно знать, что такое небезопасный Rust.

Небезопасный код должен быть небольшим и изолированным, а его корректность нужно тщательно документировать. Его следует оборачивать в безопасный слой абстракции.

Небезопасный Rust даёт доступ к пяти новым возможностям:

  • Разыменование сырых указателей.
  • Доступ к изменяемым статическим переменным и их изменение.
  • Доступ к полям union.
  • Вызов unsafe функций, включая функции extern.
  • Реализация unsafe трейтов.

Далее кратко рассмотрим возможности небезопасного Rust. Полные подробности см. в главе 19.1 The Rust Book и в Rustonomicon.

This slide should take about 5 minutes.

Небезопасный Rust не означает, что код некорректен. Это значит, что разработчики отключили некоторые проверки безопасности компилятора и должны сами писать корректный код. Компилятор больше не проверяет соблюдение правил безопасности памяти Rust.