Clone

有时,如需 复制某个值。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.

Clone 的设计理念是让您轻松发现堆分配的位置。查找 .clone() 和其他一些内容,例如 Vec::newBox::new

通常的做法是,先使用 “克隆操作”解决借用检查器问题,在后续通过优化消除这些克隆操作。