공통 메서드
먼저 여러 타입이 공유해야 할 최소 동작을 trait으로 작게 정의한다.
계약컴파일 시점 타입이 하나로 정해지는 제네릭과 달리, trait object는 여러 구현체를 한 컬렉션에 담는 유연성을 준다.
먼저 여러 타입이 공유해야 할 최소 동작을 trait으로 작게 정의한다.
계약구체 타입 크기가 다르므로 Box, Rc, Arc 같은 포인터 뒤에 dyn Trait을 둔다.
indirection메서드 호출은 vtable을 통해 런타임에 결정되며 약간의 비용이 있다.
runtime dispatch제네릭 메서드나 Self 반환처럼 객체 안전성을 깨는 항목을 피한다.
object safety동일 타입 반복은 제네릭, 서로 다른 타입 혼합은 trait object가 자연스럽다.
generic vs dyn