实现了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 页
评论区
写评论还没有评论