Ключевое слово `unsafe` является неотъемлемой частью дизайна языка Rust. Для тех кто не знаком с ним: `unsafe` — это ключевое слово, которое, говоря простым языком, является способом обойти проверку типов (_type checking_) Rust'а.
Существование ключевого слова `unsafe` для многих поначалу является неожиданностью.
В самом деле, разве то, что программы не "падают" от ошибок при работе с памятью,
не является особенностью Rust? Если это так, то почему имеется легкий способ обойти
систему типов? Это может показаться дефектом языка.
Все же, по моему мнению, `unsafe` не является недостатком. На самом деле он является
важной частью языка. `unsafe` выполняет роль некоторого выходного клапана — это значит то, что мы можем использовать систему типов в простых случаях, однако позволяя использовать всевозможные хитрые приемы, которые вы хотите использовать в вашем коде. Мы только требуем, чтобы вы скрывали эти ваши приемы (`unsafe` код) за безопасными внешними абстракциями.
Данная заметка представляет ключевое слово `unsafe` и идею ограниченной "небезопасности".
Фактически это предвестник [заметки][1], которую я надеюсь написать чуть позже.
Она обсуждает модель памяти Rust, которая указывает, что можно, а что нельзя делать в `unsafe` коде.
[Читать дальше →][2]
[1]:
http://smallcultfollowing.com/babysteps/blog/2016/05/27/the-tootsie-pop-model-for-unsafe-code/
[2]:
https://habrahabr.ru/post/346336/?utm_source=habrahabr&utm_medium=rss&utm_campaign=346336#habracut