Clone
گاهی اوقات شما میخواهید یک نسخه از مقدار بسازید. ویژگی Clone این کار را انجام میدهد.
fn say_hello(name: String) {
println!("سلام {name}")
}
fn main() {
let name = String::from("الیس");
say_hello(name.clone());
say_hello(name);
}
-
ایدهی
Cloneاین است که شناسایی مکانهای تخصیص حافظه heap آسانتر شود. به دنبال()clone.و چند مورد دیگر مانند!vecیاBox::newبگردید. -
معمولاً برای حل مشکلات مربوط به بررسیکننده قرضگیری (borrow checker) از کپی کردن استفاده میشود و سپس در آینده تلاش میشود تا آن کپیها بهینهسازی شوند.
-
cloneمعمولاً یک کپی عمیق از مقدار را انجام میدهد، به این معنی که اگر به عنوان مثال یک آرایه را کپی کنید، تمام عناصر آن آرایه نیز کپی خواهند شد. -
رفتار
cloneتوسط کاربر تعریف میشود، بنابراین میتواند در صورت نیاز، منطق کپیبرداری سفارشی را اجرا کند.