능력 정의
Display, Iterator처럼 타입이 제공해야 할 동작을 작게 나눈다.
capabilitytrait는 메서드 묶음이 아니라 타입이 제공해야 할 능력의 계약이며, 정적 디스패치와 동적 디스패치 중 무엇을 원하는지에 따라 형태가 달라진다.
Display, Iterator처럼 타입이 제공해야 할 동작을 작게 나눈다.
capability성능과 타입별 최적화가 중요하면 generic, heterogenous collection이면 dyn Trait를 본다.
dispatchIterator::Item처럼 구현마다 결과 타입이 하나로 정해지면 associated type이 맞다.
associated typegeneric method나 Self 반환이 있으면 dyn Trait로 만들 수 있는지 검토한다.
object safe