Clone

Bazen bir değerin bir kopyasını oluşturmak istersiniz. Clone özelliği (trait) bunu gerçekleştirir.

fn say_hello(name: String) {
    println!("Merhaba {name}")
}

fn main() {
    let name = String::from("Ayşe");
    say_hello(name.clone());
    say_hello(name);
}
This slide should take about 2 minutes.
  • Clone fikri, dinamik bellek (heap) tahsislerinin nerede meydana geldiğini kolayca tespit etmektir. .clone() ve vec! veya Box::new gibi birkaç diğerine bakın.

  • Ödünç alma denetleyicisi (borrow checker) ile ilgili sorunlardan “klonlayarak kurtulmak” ve daha sonra bu klonları optimize etmeye çalışmak için geri dönmek yaygındır.

  • clone genellikle değerin derin bir kopyasını (deep copy) gerçekleştirir, yani örneğin bir diziyi klonlarsanız, dizinin tüm elemanları da klonlanır.

  • clone’un davranışı kullanıcı tanımlıdır, bu nedenle gerekirse özel klonlama mantığı gerçekleştirebilir.