Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Владение

У каждой привязки переменной есть область видимости, в которой она действительна, и использовать переменную вне её области видимости — ошибка:

// Copyright 2023 Google LLC
// SPDX-License-Identifier: Apache-2.0

struct Point(i32, i32);

fn main() {
    {
        let p = Point(3, 4);
        dbg!(p.0);
    }
    dbg!(p.1);
}

Говорят, что переменная владеет значением. Каждое значение в Rust всегда имеет ровно одного владельца.

В конце области видимости переменная освобождается (dropped), и данные освобождаются. Здесь может выполниться деструктор, чтобы освободить ресурсы.

This slide should take about 5 minutes.

Студенты, знакомые с реализациями сборки мусора, знают, что сборщик мусора начинает с набора «корней», чтобы найти всю достижимую память. Принцип «единственного владельца» в Rust — похожая идея.