Володіння

Усі прив’язки змінних мають область, де вони дійсні, і використання змінної поза її областю є помилкою:

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 має схожу ідею.