Небезопасные абстракции
• оригинал: Niko Matsakis • перевод: bmusin • обучение • поддержите на Patreon
Ключевое слово unsafe
является неотъемлемой частью дизайна языка Rust.
Для тех кто не знаком с ним: unsafe
— это ключевое слово, которое,
говоря простым языком, является способом обойти проверку типов (type checking) Rust’а.
Существование ключевого слова unsafe
для многих поначалу является неожиданностью.
В самом деле, разве то, что программы не «падают» от ошибок при работе с памятью,
не является особенностью Rust? Если это так, то почему имеется лёгкий способ
обойти систему типов? Это может показаться дефектом дизайна языка.
Все же, по моему мнению, unsafe
не является недостатком. На самом деле
он является важной частью языка. unsafe
выполняет роль некоторого выходного
клапана — это значит то, что мы можем использовать систему типов в простых случаях,
однако позволяя использовать всевозможные хитрые приёмы, которые вы хотите
использовать в вашем коде.
Мы только требуем, чтобы вы скрывали эти ваши приёмы (unsafe
код) за безопасными внешними абстракциями.
Данная заметка представляет ключевое слово unsafe
и идею ограниченной «небезопасности».
Фактически это предвестник заметки, которую я надеюсь написать чуть позже.
Она обсуждает модель памяти Rust, которая указывает, что
можно, а что нельзя делать в unsafe
коде.