Rust的Copy与Clone

先说结论, Copy是给编译器看的, Clone是给程序员用的. Clone显示指定资源的流向.

为什么区分Copy与Clone?

因为所有权, move语义, 用来对内存资源流动方向的管理.

  • Copy是简单的内存拷贝.一般是在栈上比如:int, bool...在执行完函数后就没了.
  • 但堆上数据呢? Vec何时释放? 函数执行完? 完蛋

每个变量名对应一个内存资源. 在不消耗原有内存资源的情况下实现内存资源的转移.
必须显示指定资源的流向. 因此需要显示使用Clone.

总结

这里引用知乎F001的总结

  1. Copy内部没有方法,Clone内部有两个方法。
  2. 用法
    1. Copy trait 是给编译器用的,告诉编译器这个类型默认采用 copy 语义,而不是 move 语义。
    2. Clone trait 是给程序员用的,我们必须手动调用clone方法,它才能发挥作用。
  3. 实现
    1. Copy trait不是你想实现就实现,它对类型是有要求的,有些类型就不可能 impl Copy例如: String
    2. Clone trait 没有什么前提条件,任何类型都可以实现unsized 类型除外
  4. Copy trait规定了这个类型在执行变量
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值