BorrowCheck › Ядро языка Rust

Владение, перемещение, Copy/Clone

Владение как исключительная обязанность уничтожить значение; семантика перемещения; чем Copy отличается от Clone.

Тема объясняет владение (ownership): у каждого значения есть ровно один владелец, и только он отвечает за уничтожение значения. Вопросы проверяют, что происходит со значением при присваивании, передаче в функцию и возврате из неё: когда оно перемещается (move), когда копируется и чем трейты Copy и Clone различаются по смыслу, а не только по синтаксису. Отдельно разбираются места, из которых значение можно и нельзя переместить: поле структуры, элемент Vec, содержимое Box, значение за ссылкой &mut, а также частичное перемещение и повторная инициализация переменной. Последний раздел посвящён области видимости: когда компилятор вызывает деструктор, в каком порядке уничтожаются локальные переменные и параметры, почему затенение не уничтожает значение, а присваивание уничтожает прежнее. Тема служит основой для заимствования и времён жизни.

34 вопроса: базовый уровень — 14, средний — 18, углублённый — 2. 6 справок, 7 источников.

Разделы

  1. Владение как свойство места
  2. Семантика перемещения
  3. Copy против Clone
  4. Владение при вызове и возврате
  5. Частичные перемещения
  6. Область видимости и уничтожение

Предыдущая тема: Синтаксис, переменные, типы · Следующая тема: Заимствование, ссылки, NLL