RUST · TRAIT BOUND

조건부 impl과 blanket impl 지도

트레이트 바운드를 impl 블록에 붙이면 조건을 만족하는 타입에만 메서드가 열립니다. 모든 만족 타입에 넓게 적용하면 blanket implementation이 됩니다.

조건부 구현 흐름

bound
generic typePair<T>처럼 어떤 타입이 들어올 수 있는 구조를 둡니다.
trait boundT: Display + PartialOrd 같은 조건을 붙입니다.
conditional impl조건을 만족하는 T에만 메서드가 생깁니다.
method available해당 타입 값에서 cmp_display 같은 메서드를 호출할 수 있습니다.
blanket impl조건을 만족하는 모든 타입에 트레이트 구현을 넓게 적용합니다.
제네릭바운드조건부 impl메서드 사용blanket

설계 기준

api
능력 기반 API타입 이름보다 타입이 가진 trait 능력으로 기능을 엽니다.
오류 메시지바운드가 부족하면 호출 위치에서 컴파일 오류가 납니다.
과한 바운드필요 없는 조건을 붙이면 API 사용 범위가 좁아집니다.
충돌 주의blanket impl은 다른 구현과 충돌할 수 있어 설계가 중요합니다.