Ответ 1
Copy
trait - это тэйттрет Clone
, поэтому вам всегда нужно реализовать Clone
, если вы реализуете Copy
#[derive(Copy, Clone)]
enum MyEnum {
Test
}
Это имеет смысл, так как и Copy
и Clone
являются способами дублирования существующего объекта, но с другой семантикой. Copy
может дублировать объект, просто скопировав биты, составляющие объект (например, memcpy
в C). Clone
может быть более дорогостоящим и может включать выделение памяти или дублирование системных ресурсов. Все, что можно дублировать с помощью Copy
, также можно дублировать с помощью Clone
.