Slide 14
Slide 14 text
所有権の移動
Memory
移動前
v1
データ [1,2,3]
Memory
移動後
v1
(無効)
v2
データ [1,2,3]
所有権の移動とは
値のメモリ所有権が別の変数に移る
元の変数は無効になる(使用不可)
同時に2
つの変数が同じメモリを操
作できない
コンパイル時にメモリの安全性を保
証
1 //
ヒープメモリに[1, 2, 3]
を確保
2 let v1 = vec![1, 2, 3];
3
4 // v1
の所有権がv2
に移動
5 // -
メモリの所有者がv1
からv2
に変更
6 // - v1
は無効になる
7 let v2 = v1;
8
9 //
ここでv1
を使おうとするとコンパイルエラー
10 // println!("{:?}", v1)
11
12 // v2
は有効なので使用可能
13 println!("{:?}", v2);