Rust 中的浅拷贝和移动

Shallow Copy and Move in rust

rust 是否有可能有浅拷贝,因为看起来移动会取代浅拷贝?

你必须根据基础类型来区分。

您不能对 struct Foo(String); 进行浅拷贝,因为 Foo 的两个实例会指向同一个 String,这会违反 strict aliasing rule

但是,如果您有一个参考计数器,例如struct Foo(Rc<String>); 这是可能的,因为 Rc 会阻止你做不安全的事情,例如具有可变引用,当 String.

上有其他引用时

实现 [Clone] 的类型也可以进行 "shallow" 复制,因为 Copy 暗示可以使用 [=18= 复制类型](例如 u32&T)。

也很值得一读


所以,一般来说没有:例外是引用计数结构(RcArc),Cloneables ,或引用 (&T),因为它们不违反严格的别名规则。