Clone

有时,如需 复制某个值。Clone 特征 可以完成此操作。

  1. #[derive(Default)]
  2. struct Backends {
  3. hostnames: Vec<String>,
  4. weights: Vec<f64>,
  5. }
  6. impl Backends {
  7. fn set_hostnames(&mut self, hostnames: &Vec<String>) {
  8. self.hostnames = hostnames.clone();
  9. self.weights = hostnames.iter().map(|_| 1.0).collect();
  10. }
  11. }

This slide should take about 2 minutes.

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

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