Derive Traits

derive는 타입 의미가 맞을 때만 자동 구현한다

Debug, Clone, Copy, PartialEq 같은 trait는 필드 전체의 의미가 타입의 의미와 맞을 때 derive로 기본 구현을 얻을 수 있다.

자동 구현이 공개 API 의미를 바꾸는지 확인한다

auto impl

출력

Debug는 개발 중 구조체 값을 빠르게 확인하지만 secret 필드 노출 여부를 먼저 본다.

복제

Clone은 명시 복제, Copy는 소유권 이동 없이 복사해도 의미가 안전한 작은 값 타입에만 적합하다.

비교

PartialEq, Eq, Ord, Hash는 HashMap key와 정렬 규칙까지 영향을 준다.

derive 의미 조건

수동 impl이 필요한 불변식, 부동소수점 NaN, 비밀키 필드는 derive 전에 별도로 검토한다.

typederiveauto impluse
자동 구현

derive는 편리한 자동 구현이지만, 그 trait가 타입의 실제 동등성, 복제 비용, 출력 정책과 맞을 때만 붙이는 것이 안전하다.