RUST · ADVANCED TRAITS

고급 트레이트 도구 선택

문제의 모양을 먼저 보고 연관 타입, 기본 타입 매개변수, 완전 정규화 문법, 슈퍼트레이트, 뉴타입 패턴 중 하나를 선택합니다.

판단 지도
반환 타입이 구현마다 달라짐

연관 타입

트레이트 안에서 자리표시자 타입을 선언하고 구현체가 한 번 정합니다.

type Item
대부분은 Self면 충분함

기본 타입 매개변수

보통의 사용법은 짧게 두고, 필요한 경우 오른쪽 타입만 바꿉니다.

Add<Rhs = Self>

고급 트레이트 도구 선택

타입 관계를 고정할지, 기본값을 열어둘지, 이름 충돌을 풀지, 선행 능력을 요구할지, 외부 타입을 감쌀지부터 판단합니다.

같은 이름 후보가 여럿

완전 정규화 문법

어떤 타입의 어떤 트레이트 구현을 부르는지 경로로 명확히 씁니다.

<Dog as Animal>
다른 트레이트 기능이 필요함

슈퍼트레이트

새 트레이트가 기존 트레이트의 메서드와 보장을 사용할 수 있게 합니다.

Trait: Display
외부 타입에 외부 트레이트

뉴타입 패턴

얇은 래퍼를 우리 타입으로 만들어 고아 규칙을 우회합니다.

struct Wrapper(Vec<T>)