https://doc.rust-lang.org/stable/std/marker/trait.Copy.html > It’s important to note that in these two examples, the only difference is whether you are allowed to access x after the assignment. > Under the hood, both a copy and a move can result in bits being copied in memory, although this is sometimes optimized away. ... > The behavior of Copy is not overloadable; it is always a simple bit-wise copy. ... > The implementation of Clone can provide any type-specific behavior necessary to duplicate values safely. > For example, the implementation of Clone for String needs to copy the pointed-to string buffer in the heap.