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