#[derive](Rust)
構造体や列挙型にトレイトを自動実装するRustの属性。#[derive(Debug, Clone, PartialEq, Serialize)] のように書く。よくあるトレイト実装の定型コードを避ける標準的な方法で、Rustの使いやすさを切り開いた。
標準で導出できるのは Debug、Clone、Copy、PartialEq、Eq、Hash、Default、Ord、PartialOrd。ライブラリ定義のものには serde(Serialize/Deserialize)、thiserror(Error)、schemars(JsonSchema)がある。カスタムderiveマクロは、クレート作者がproc-macroクレートで自作できる。現代のRustエコシステムでは、serde、thiserror、anyhowが誰もが使う派生トレイトだ。コンパイル時のコストとして、各deriveはかなりの量のコードに展開され、Rustのコンパイルが遅い一因になっている。現代的な使い分けは、性能が重要なコードは手書きのimpl、それ以外はすべてderiveである。