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 comovec!ouBox::new. -
É comum “clonar sua saída” de problemas com o verificador de empréstimo e retornar mais tarde para tentar otimizar esses clones.
-
clonegeralmente 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.