問題一覧に戻る
初級所有権
問題33: Copy型とClone
基本的な型(整数、浮動小数点数、bool、char)はCopyトレイトを実装しており、代入時に自動的にコピーされます。一方、String、Vec等のヒープを使う型は移動します。これらの型を複製するにはclone()メソッドを使います。cloneは明示的な深いコピーを行い、元の値も使い続けられます。
fn main() {
// i32はCopy型
let x = 5;
let y = ;
println!("x = {}, y = {}", x, y);
// Stringは移動するのでclone
let s1 = String::from("hello");
let s2 = s1.();
// 両方使用可能
println!("s1 = {}, s2 = {}", s1, s2);
// Vectorもclone
let v1 = vec![1, 2, 3];
let v2 = v1.();
println!("v1 = {:?}, v2 = {:?}", v1, v2);
}