RUST · TRAIT BOUND
조건부 impl과 blanket impl 지도
트레이트 바운드를 impl 블록에 붙이면 조건을 만족하는 타입에만 메서드가 열립니다. 모든 만족 타입에 넓게 적용하면 blanket implementation이 됩니다.
조건부 구현 흐름
bound
generic type
Pair<T>처럼 어떤 타입이 들어올 수 있는 구조를 둡니다.
trait bound
T: Display + PartialOrd 같은 조건을 붙입니다.
conditional impl
조건을 만족하는 T에만 메서드가 생깁니다.
method available
해당 타입 값에서 cmp_display 같은 메서드를 호출할 수 있습니다.
blanket impl
조건을 만족하는 모든 타입에 트레이트 구현을 넓게 적용합니다.
제네릭
→
바운드
→
조건부 impl
→
메서드 사용
→
blanket
설계 기준
api
능력 기반 API
타입 이름보다 타입이 가진 trait 능력으로 기능을 엽니다.
오류 메시지
바운드가 부족하면 호출 위치에서 컴파일 오류가 납니다.
과한 바운드
필요 없는 조건을 붙이면 API 사용 범위가 좁아집니다.
충돌 주의
blanket impl은 다른 구현과 충돌할 수 있어 설계가 중요합니다.