Розумні вказівники досить часто використовують небезпечний код. Як згадувалося раніше, вони є поширеним інструментом для взаємодії з найнижчими рівнями пам'яті у Rust.
Що таке небезпечний код? Небезпечний код поводиться так само, як і звичайний код у Rust, за за винятком декількох можливостей, щодо яких компілятор Rust не може надати гарантій.
Основною можливістю небезпечного коду є розіменування необроблених вказівник. Це означає розміщення необробленого вказівника
в пам'яті та оголошення "тут існує структура даних!" і перетворення її на дані, яке ви можете використовувати (наприклад, *const u8
на u8
).
Rust не має можливості відстежувати значення кожного байта, який записується до пам'яті. Оскільки, Rust не може надати
гарантій щодо того, чи існує щось за довільним номером, який використовується як неороблений вказівник, він поміщає розіменування у unsafe { ... }
блок.
Розумні вказівники широко використовуються для розіменування сирі вказівники, і вони добре зарекомендували себе у тому, що вони роблять.