Владение, перемещение, Copy/Clone
Владение как исключительная обязанность уничтожить значение; семантика перемещения; чем Copy отличается от Clone.
Тема объясняет владение (ownership): у каждого значения есть ровно один владелец, и только он отвечает за уничтожение значения. Вопросы проверяют, что происходит со значением при присваивании, передаче в функцию и возврате из неё: когда оно перемещается (move), когда копируется и чем трейты Copy и Clone различаются по смыслу, а не только по синтаксису. Отдельно разбираются места, из которых значение можно и нельзя переместить: поле структуры, элемент Vec, содержимое Box, значение за ссылкой &mut, а также частичное перемещение и повторная инициализация переменной. Последний раздел посвящён области видимости: когда компилятор вызывает деструктор, в каком порядке уничтожаются локальные переменные и параметры, почему затенение не уничтожает значение, а присваивание уничтожает прежнее. Тема служит основой для заимствования и времён жизни.
34 вопроса: базовый уровень — 14, средний — 18, углублённый — 2. 6 справок, 7 источников.
Разделы
- Владение как свойство места
- Семантика перемещения
CopyпротивClone- Владение при вызове и возврате
- Частичные перемещения
- Область видимости и уничтожение
Предыдущая тема: Синтаксис, переменные, типы · Следующая тема: Заимствование, ссылки, NLL