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::new
或 Box::new
。
通常的做法是,先使用 “克隆操作”解决借用检查器问题,在后续通过优化消除这些克隆操作。