Derive

자동 구현은 비교, 출력, 복사, 기본값 의도를 드러낸다

`#[derive(...)]`는 반복 코드를 줄이는 도구이면서 타입이 어떤 연산을 허용하는지 문서화하는 선언입니다.

출력

Debug

개발 중 상태 확인과 테스트 실패 메시지에는 `Debug`가 기본입니다.

비교

Eq와 Ord

동등성, 정렬, 컬렉션 키 사용 여부에 따라 비교 trait를 고릅니다.

복사

Clone과 Copy

소유권 이동 대신 값 복제가 자연스러운 작은 타입에만 신중히 붙입니다.

기본

Default

옵션 구조체나 테스트 데이터 생성에 안전한 기본값이 있으면 유용합니다.

자주 함께 보는 trait

PartialEq + Eq

모든 값이 반사적 동등성을 만족할 때 `Eq`까지 붙입니다.

PartialOrd + Ord

전체 순서가 명확한 타입에만 `Ord`를 사용합니다.

Clone + Copy

`Copy`는 암묵 복사가 생기므로 리소스 소유 타입에는 피합니다.

API 의미

derive는 편의 기능이 아니라 타입의 사용 계약이므로 외부 API로 노출되는 타입일수록 더 신중하게 고릅니다.