Rust では、型に対する代入操作は移動となり、資源の所有権が移動する。
Copy 型は、代入操作時にコピーが行われる型を表すマーカートレイト std::marker::Copy
を実装する。
pub trait Copy: Clone { // Empty. }
Copy
トレイトは Clone
トレイトを実装しており、代入時にクローンによるコピーが行われる。
Clone
トレイトと同様に、#[derive(Copy, Clone)]
属性で指定することがほとんどである。
OS のハンドルといった、クローンできない他の資源を持つものは、 Copy 型にすることはできない。
資源の開放時に特別な後処理が必要なコードが必要な、Drop
トレイトを実装した型は Copy にすることはできない。