【发布时间】:2020-10-16 14:24:11
【问题描述】:
struct Haha {
pub a: u32,
pub b: Vec<u32>,
}
let example = Haha {
a: 32,
b: vec![1],
};
let new_a = example.a;
let new_b = example.b;
我的理解是:
-
new_a是example.a的副本,所以example仍然拥有example.a。 -
new_b现在拥有example.b,因为example.b已被移动。
rust 是否会隐式复制 example.a,因为它具有 Copy 特征?并且由于example.b,这是一个Vec,没有实现Copy trait,example.b 的所有权被移动而不是复制?
【问题讨论】:
-
查看这篇博文medium.com/@bugaevc/…“幸运的是,Rust 具有 Copy trait。实现它的类型(所有原始类型都这样做)在分配时使用复制语义,所有其他类型都使用移动语义。 "