Derive decision

derive는 모든 필드 조건과 사용처가 맞을 때 붙인다

자동 구현은 편리하지만 타입의 의미를 함께 선언한다. 비교, 복제, 해시, 기본값이 도메인 규칙과 맞는지 먼저 확인한다.

표준 derive의 조건과 대표 사용처

auto impl contract

동등성

PartialEq + Eq

모든 필드가 같을 때 같은 값이다. Eq는 HashMap 키처럼 자기 자신과 항상 같아야 한다.

정렬 순서

PartialOrd + Ord

구조체는 필드 선언 순서, 열거형은 배리언트 선언 순서가 비교 규칙이 된다.

복제 방식

Clone + Copy

Clone은 각 부분을 복제한다. Copy는 비트 복사만으로 충분한 타입에 제한한다.

저장과 기본값

Hash + Default

HashMap 키와 unwrap_or_default처럼 컬렉션과 기본 생성 흐름에 연결된다.

필드 derive 연산자 컬렉션
수동 구현 기준

Display처럼 사용자에게 어떤 정보를 보여줄지 컴파일러가 알 수 없는 트레이트는 derive 대상이 아니다. 자동 구현이 타입의 약속과 다르면 직접 구현한다.