출력
Debug는 개발 중 구조체 값을 빠르게 확인하지만 secret
필드 노출 여부를 먼저 본다.
Debug, Clone, Copy,
PartialEq 같은 trait는 필드 전체의 의미가 타입의 의미와
맞을 때 derive로 기본 구현을 얻을 수 있다.
Debug는 개발 중 구조체 값을 빠르게 확인하지만 secret
필드 노출 여부를 먼저 본다.
Clone은 명시 복제, Copy는 소유권 이동
없이 복사해도 의미가 안전한 작은 값 타입에만 적합하다.
PartialEq, Eq, Ord,
Hash는 HashMap key와 정렬 규칙까지 영향을 준다.
수동 impl이 필요한 불변식, 부동소수점 NaN, 비밀키 필드는 derive 전에 별도로 검토한다.
derive는 편리한 자동 구현이지만, 그 trait가 타입의 실제 동등성, 복제 비용, 출력 정책과 맞을 때만 붙이는 것이 안전하다.