当前位置:   article > 正文

Rust的Copy与Clone_rust clone copy

rust clone copy

先说结论, 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规定了这个类型在执行变量
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/514553
推荐阅读
相关标签
  

闽ICP备14008679号