Володіння
Усі прив’язки змінних мають область, де вони дійсні, і використання змінної поза її областю є помилкою:
struct Point(i32, i32);
fn main() {
{
let p = Point(3, 4);
println!("x: {}", p.0);
}
println!("y: {}", p.1);
}
Ми говоримо, що змінна володіє значенням. Кожне значення у Rust завжди має лише одного власника.
В кінці області видимості змінна знищується і дані звільняються. Тут може бути запущено деструктор, щоб звільнити ресурси.
This slide should take about 5 minutes.
Студенти, знайомі з реалізаціями збирачів сміття, знають, що збирач сміття починає роботу з набору “коренів”, щоб виявити всю доступну пам’ять. Принцип “єдиного власника” у Rust має схожу ідею.