< 返回我的博客

爱国的张浩予 发表于 2021-02-28 12:47

Tags:copy,auto,trait

实现了Copy Trait的栈变量,每次遭遇赋值操作时,不再是交出所有权(即,【所有权-转移】),而是做一次【深度-复制】。就内存利用率来讲,这不一定是什么好事,更何况实现Copy Trait的门槛也不低:

  1. Copy TraitDrop Trait是互斥的。
    1. 这么一来,【智能指针】与Copy Trait算是无缘了,因为【智能指针】除了需要Deref<T> TraitDerefMut<T> Trait来定制【去引用】操作,它也同样需要Drop Trait来管理自己如何被析构掉。
  2. 自定义Nominal Type (i.e. struct, enum, union)的所有字段类型也都必须实现了Copy Trait。于是,Nominal Type自身才能合法地实现Copy Trait

另一方面,我个人理解Copy Trait更像是Semi-auto Trait,因为:

  1. 数字类型自动都实现了Copy Trait。此外,因为【指针】与【引用】本质上都是usize类型的,所以它们生来也都实现了Copy Trait
  2. Copy Trait类型值组成的【数组】与【元组tuple】也都自动实现的Copy Trait。(多么符合人类工程学的半自动呀!)
  3. 最后【函数指针】也自动实现的Copy Trait

评论区

写评论

还没有评论

1 共 0 条评论, 1 页