所有権

すべての変数バインディングには有効なスコープがあり、スコープ外で変数を使用するとエラーになります。

struct Point(i32, i32);

fn main() {
    {
        let p = Point(3, 4);
        println!("x: {}", p.0);
    }
    println!("y: {}", p.1);
}

これを、変数が値を 所有 していると表現します。すべての Rustの値所有者は常に 1 人です。

スコープから外れると変数が破棄 (drop) され、データが解放されます。ここでデストラクタを実行してリソースを解放できます。

This slide should take about 5 minutes.

ガベージ コレクションの実装に精通している受講者は、ガベージ コレクタが一連の「ルート」から開始して到達可能なすべてのメモリを見つけることを知っています。Rust の「単一オーナー」の原則も、同様の考え方に基づいています。