This issue seems to imply it's just an implementation detail (memcpy
vs ???), but I can't find any explicit description of the differences.
This issue seems to imply it's just an implementation detail (memcpy
vs ???), but I can't find any explicit description of the differences.
Clone
is designed for arbitrary duplications: a Clone
implementation for a type T
can do arbitrarily complicated operations required to create a new T
. It is a normal trait (other than being in the prelude), and so requires being used like a normal trait, with method calls, etc.
The Copy
trait represents values that can be safely duplicated via memcpy
: things like reassignments and passing an argument by-value to a function are always memcpy
s, and so for Copy
types, the compiler understands that it doesn't need to consider those a move.