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.