필수 메서드 시그니처와 기본 구현을 함께 둘 수 있습니다.
트레이트는 여러 타입이 공유해야 할 메서드 집합을 이름 붙여, 제네릭 코드가 요구하는 동작을 명시합니다.
타입이나 트레이트 중 하나는 현재 크레이트에 있어야 구현할 수 있어 외부 코드의 충돌을 줄입니다.
필수 메서드 시그니처와 기본 구현을 함께 둘 수 있습니다.
특정 타입이 트레이트 계약을 어떻게 만족하는지 작성합니다.
공통 동작을 제공하고 타입별로 필요한 부분만 재정의합니다.
바운드가 길어질 때 함수 시그니처를 읽기 좋게 정리합니다.
여러 타입이 공유할 행위에 트레이트 이름을 붙입니다.
호출자가 기대할 메서드와 반환 타입을 정의합니다.
제네릭 함수가 필요한 동작만 바운드로 요구합니다.
트레이트는 상속보다 느슨하게 공통 동작을 묶고, 제네릭 코드의 요구사항을 명확한 타입 조건으로 바꿉니다.