实现了Copy Trait的栈变量,每次遭遇赋值操作时,不再是交出所有权(即,【所有权-转移】),而是做一次【深度-复制】。就内存利用率来讲,这不一定是什么好事,更何况实现Copy Trait的门槛也不低:
Copy Trait与Drop Trait是互斥的。- 这么一来,【智能指针】与
Copy Trait算是无缘了,因为【智能指针】除了需要Deref<T> Trait和DerefMut<T> Trait来定制【去引用】操作,它也同样需要Drop Trait来管理自己如何被析构掉。
- 这么一来,【智能指针】与
- 自定义
Nominal Type (i.e. struct, enum, union)的所有字段类型也都必须实现了Copy Trait。于是,Nominal Type自身才能合法地实现Copy Trait。
另一方面,我个人理解Copy Trait更像是Semi-auto Trait,因为:
- 数字类型自动都实现了
Copy Trait。此外,因为【指针】与【引用】本质上都是usize类型的,所以它们生来也都实现了Copy Trait。 - 由
Copy Trait类型值组成的【数组】与【元组tuple】也都自动实现的Copy Trait。(多么符合人类工程学的半自动呀!) - 最后【函数指针】也自动实现的
Copy Trait。
1
共 0 条评论, 1 页
评论区
写评论还没有评论