← Rust コース
45. Rc<T> — 所有者を複数にする
所有権のルールでは値の所有者は常に1人ですが、Rc<T>(参照カウント)で包むと複数の所有者で1つの値を共有できます。Rc::clone(&data) は中身を複製せず「所有者の数」を1増やすだけで、カウントが0になった時点で値が解放されます。
「グラフ構造で複数のノードが同じデータを指す」「どの所有者が最後まで残るか実行時まで分からない」といった、1人の所有者では表現できない設計で使います。今が何人で共有しているかは Rc::strong_count で確認できます。
Rc が配るのは読み取り専用の共有で、中身を書き換えることはできません(書き換えたい場合は次のレッスンの RefCell と組み合わせます)。また Rc はシングルスレッド専用という制約も覚えておいてください。
▶ サンプルコードを実行してみよう(自由に書き換えてOK)
Rust
サンプルコードで身につける(5本) →
学んだ概念を、素朴な例から実務寄りの例まで5つの具体例で確認します。
公式ドキュメントで詳しく ↗