rust 是否有可能具有浅拷贝,因为看起来移动替换了浅拷贝?
问问题
1420 次
1 回答
1
您必须根据基础类型进行区分。
你不能做一个浅拷贝,struct Foo(String);
因为两个实例Foo
会指向同一个String
,这会违反严格的别名规则。
但是,如果您有一个引用计数器,例如struct Foo(Rc<String>);
它是可能的,因为Rc
会阻止您做不安全的事情,例如,当String
.
实现 [ ] 的类型也可以进行Clone
“浅”复制,因为这Copy
意味着可以使用memcpy
(例如 au32
或 a &T
)复制该类型。
复制和克隆有什么区别?也很值得一读。
所以,一般来说不是:异常是引用计数的结构(Rc
或Arc
)Cloneables
,或引用(&T
),因为它们不违反严格的别名规则。
于 2018-11-12T07:31:09.340 回答