Copyトレイトは、コピー可能なことを表すトレイト。
Copyトレイトはstd::preludeに含まれているので、useしなくても使える。
ここで言う「コピー」とは、ビット列の単純なコピーということらしい。(C言語のmemcpyレベルということか)
基本データ型(整数や浮動小数など)はCopyトレイトを実装しているので、コピー可能。
コピー可能ということは、変数に代入したり関数(やメソッド)へ渡したり関数から返したりする際に値をコピーできるということなので、所有権を気にする必要が無い(所有権の移動を伴わない)。
Copyトレイトを実装できる条件のひとつは、コンパイル時にデータのサイズが確定できること、らしい。
構造体にCopyトレイトを実装しようと思ったら、全てのフィールドの型がCopyトレイトを実装している必要がある。
また、Dropトレイトを実装している場合はCopyトレイトを実装できないらしい。