【Rust】Copy マーカートレイト

blog1.mammb.com

Rust では、型に対する代入操作は移動となり、資源の所有権が移動する。

Copy 型は、代入操作時にコピーが行われる型を表すマーカートレイト std::marker::Copy を実装する。

pub trait Copy: Clone {
    // Empty.
}

Copy トレイトは Clone トレイトを実装しており、代入時にクローンによるコピーが行われる。

Clone トレイトと同様に、#[derive(Copy, Clone)] 属性で指定することがほとんどである。

blog1.mammb.com


OS のハンドルといった、クローンできない他の資源を持つものは、 Copy 型にすることはできない。 資源の開放時に特別な後処理が必要なコードが必要な、Drop トレイトを実装した型は Copy にすることはできない。