Trait Clone
Cuando queramos hacer una copia de un valor, podemos hacerlo con el trait Clone
.
#[derive(Default)] struct Backends { hostnames: Vec<String>, weights: Vec<f64>, } impl Backends { fn set_hostnames(&mut self, hostnames: &Vec<String>) { self.hostnames = hostnames.clone(); self.weights = hostnames.iter().map(|_| 1.0).collect(); } }
This slide should take about 2 minutes.
La función de Clone
es poder encontrar fácilmente dónde se producen las asignaciones de montículos. Busca .clone()
y otros elementos como Vec::new
o Box::new
.
Es habitual "clonar para salir" de los problemas con el verificador de préstamos y volver más tarde para optimizar esos clones.