Rust trait
같은 이름 메서드 해소 경로
여러 트레이트와 타입이 같은 이름의 메서드를 가질 때는 호출 문맥만으로 부족할 수 있습니다. 완전 정규화 문법은 어떤 구현을 부를지 직접 지정합니다.
호출 해석 단계
UFCS
inherent method
타입 자체에 구현된 메서드가 우선 고려됩니다.
trait method
스코프에 있는 트레이트 구현들이 후보가 됩니다.
ambiguity
같은 이름 후보가 여러 개면 컴파일러가 결정하지 못합니다.
<Type as Trait>
완전 정규화 문법으로 구현을 지정합니다.
call
의도한 메서드나 연관 함수를 호출합니다.
후보 수집
→
타입 확인
→
모호성
→
정규화
→
호출
쓸 때
disambiguate
같은 메서드명
여러 트레이트가 같은 이름을 제공할 때 필요합니다.
연관 함수
self가 없는 함수는 타입 추론이 더 어려울 수 있습니다.
문서성
어떤 트레이트 구현을 쓰는지 코드에 명확히 남깁니다.
남용 금지
보통은 일반 메서드 호출이 더 읽기 쉽습니다.