← Rust コース
9. 所有権 — 値はムーブする
Rust では、すべての値にただ一人の「所有者」となる変数がいます。String のようなヒープ上のデータを別の変数に代入すると、所有権が移動(ムーブ)し、元の変数はその時点で使えなくなります。
この仕組みにより、ガベージコレクタなしでメモリの解放タイミングがコンパイル時に決まります。所有者がスコープを抜けたら値は自動で解放されるため、解放忘れや二重解放といったバグが起きません。
関数に String を渡すときも同じようにムーブが起きます。「値はコピーされず、持ち主が変わる」というモデルをまずイメージできるようになるのが Rust に慣れる第一歩です。
▶ サンプルコードを実行してみよう(自由に書き換えてOK)
Rust
サンプルコードで身につける(5本) →
学んだ概念を、素朴な例から実務寄りの例まで5つの具体例で確認します。
公式ドキュメントで詳しく ↗