조건부 impl은 만족 타입만 열고 blanket impl은 넓은 범위에 적용한다
trait bound를 impl에 붙이면 조건을 만족하는 타입에만 메서드가 생기고, 모든 만족 타입에 넓게 구현할 수도 있다.
- impl<T: Display> Pair<T>
- 조건 만족 시 메서드 제공
- 타입별 능력 제한
- API가 좁고 명확
- impl<T: Display> ToString for T
- 조건 만족 타입 전체 적용
- 중복 구현 감소
- 충돌 규칙 주의
| 구분 | 의미 | 판단 |
|---|---|---|
| 메서드 제한 | T: Display | 출력 가능한 타입만 |
| 넓은 구현 | blanket impl | 생태계 전반에 적용 |
| coherence | 중복/충돌 방지 | orphan rule과 함께 이해 |
핵심 조건부 impl은 타입이 특정 능력을 가질 때만 API를 열어 주는 문이다.