RUST · TRAITS

고아 규칙은 “둘 중 하나는 내 것”

트레이트 구현 가능 여부는 구현하려는 트레이트와 대상 타입 중 적어도 하나가 현재 크레이트에 정의되어 있는지로 판단합니다.

coherence
가능

내 트레이트 + 외부 타입

Summary가 내 크레이트의 트레이트라면 Vec<T> 같은 외부 타입에도 구현할 수 있습니다.

가능

외부 트레이트 + 내 타입

Display가 표준 라이브러리 트레이트여도 Tweet이 내 타입이면 구현 위치가 명확합니다.

불가

외부 트레이트 + 외부 타입

Display for Vec<T>처럼 양쪽 모두 외부 소유라면 다른 크레이트와 구현이 충돌할 수 있습니다.

규칙의 목적

동일한 타입과 동일한 트레이트 조합에 여러 구현이 생기지 않게 하여 컴파일러가 항상 하나의 구현을 고를 수 있게 합니다.