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.