Rust の所有権と借用を図解で理解する
言語
Rust の学習で最初の関門になるのが所有権だ。だが「値の持ち主は常にひとつ」という原則さえ掴めば、borrow checker の指摘はほとんど予測できるようになる。
ムーブ: 持ち主が移る
代入や関数への受け渡しで、値の所有権は移動する。元の変数はもう使えない。
let s1 = String::from("hello");
let s2 = s1; // 所有権が s2 へムーブ
// println!("{}", s1); // ここで s1 は使えない借用: 参照を貸す
所有権を渡さずに参照だけ貸すのが借用だ。可変な借用は同時にひとつだけ、というルールがデータ競合をコンパイル時に防いでいる。


