Clone

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

#[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.

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::new ou Box::new.

É comum “clonar seu caminho para fora” de problemas com o verificador de emprĂ©stimo, e retornar mais tarde para tentar otimizar esses clones.