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