← Rust コース
9. Copy と Clone — ムーブしない型・明示的な複製
i32 や bool、char などの単純な型は Copy という性質を持ち、代入すると値がそのまま複製されます。ムーブが起きないので、代入後も元の変数を使い続けられます。
String のようにヒープを使う型は Copy ではありませんが、.clone() を呼べば中身ごと複製できます。clone は複製のコストが目に見える形でコードに残るため、「どこでコピーが発生しているか」を読み手が把握できます。
「ムーブされて使えない」というエラーに出会ったら、参照で済むか検討し、それでも両方の値が必要なら clone する、という順で考えるのが実務での経験則です。
▶ サンプルコードを実行してみよう(自由に書き換えてOK)
Rust