Clone

Às vezes vocĂȘ quer fazer uma cĂłpia de um valor. O trait Clone consegue isso.

fn say_hello(name: String) {
    println!("OlĂĄ {name}")
}

fn main() {
    let name = String::from("Alice");
    say_hello(name.clone());
    say_hello(name);
}
This slide should take about 2 minutes.
  • A ideia de Clone Ă© tornar fĂĄcil identificar onde as alocaçÔes de heap estĂŁo ocorrendo. Procure por .clone() e alguns outros como vec! ou Box::new.

  • É comum "clonar sua saĂ­da" de problemas com o verificador de emprĂ©stimo e retornar mais tarde para tentar otimizar esses clones.

  • clone geralmente realiza uma cĂłpia profunda do valor, o que significa que se vocĂȘ, por exemplo, clonar um array, todos os elementos do array tambĂ©m sĂŁo clonados.

  • O comportamento para clone Ă© definido pelo(a) usuĂĄrio(a), entĂŁo ele(a) pode executar lĂłgica de clonagem personalizada, se necessĂĄrio.