0

rust 是否有可能具有浅拷贝,因为看起来移动替换了浅拷贝?

4

1 回答 1

1

您必须根据基础类型进行区分。

你不能做一个浅拷贝,struct Foo(String);因为两个实例Foo会指向同一个String,这会违反严格的别名规则

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

实现 [ ] 的类型也可以进行Clone“浅”复制,因为这Copy意味着可以使用memcpy(例如 au32或 a &T)复制该类型。

复制和克隆有什么区别?也很值得一读。


所以,一般来说不是:异常是引用计数的结构(RcArcCloneables,或引用(&T),因为它们不违反严格的别名规则。

于 2018-11-12T07:31:09.340 回答