Тур по Rust Содержание

Умный небезопасный код (Smart Unsafe Code)

Умные указатели часто используют небезопасный (unsafe) код. Как говорилось ранее, они являются общими инструментами для взаимодействия с самыми низкими уровнями памяти в Rust.

Что такое небезопасный (unsafe) код? Небезопасный ведет себя точно как обычный Rust код с исключением нескольких возможностей, о которых компилятор не может предоставить гарантии.

Основной возможностью небезопасного кода является разыменование сырого указателя (dereferencing a raw pointer). Это означает взятие сырого указателя на позицию памяти, объявление "здесь существует структура данных" и превращение ее в представления другого типа данных, которые можно использовать (например, *const u8 в u8). В Rust нет способа следить за каждым из байтов, записываемым в память. Так как Rust не может дать гарантии, что именно существует за произвольным числом, использованным как сырой указатель (raw pointer), то необходимо поместить данное разыменование в unsafe { ... } блок.

Умные указатели разыменовывают сырые указатели экстенсивно, но они хорошо зарекомендовали себя в том, что они делают