Введение в умные указатели в Rust
Умный указатель - это тип, который ведет себя как указатель и сам следит за памятью или правилами доступа. Он хранит адрес значения, а часть работы по освобождению или проверке заимов берет на себя, когда имя выходит из области видимости.
Обычная ссылка не владеет данными: она лишь смотрит на чужое имя и живет не дольше владельца. Умный указатель часто сам владеет куском кучи или делит владение с другими именами через счетчик. Так можно держать большие структуры вне стека или дать нескольким частям программы доступ к одним данным без копирования.
В этом разделе коробка кладет одно значение в кучу с известным размером оболочки. Счет ссылок делит владение между несколькими именами, а ячейка с отложенной проверкой позволяет менять содержимое через общую ссылку. Отдельно разберем цикл счетов и слабую ссылку, а также трейт конца, который срабатывает, когда значение больше не нужно.
Дальше пройдем каждый прием по отдельности и закрепим коробку, счет и конец значения на практике. Средства для потоков и параллельного доступа здесь не затрагиваем: они живут в разделе про синхронизацию.