Trait Object

트레이트 객체 사용 조건

트레이트 객체는 런타임에 구체 타입이 달라도 같은 트레이트 메서드를 호출해야 할 때 포인터와 vtable로 동작합니다.

한 인터페이스, 여러 구체 타입

컨테이너 요구

Vec<Box<dyn Trait>>처럼 이질 타입을 함께 담습니다.

객체 안전성

Self 반환이나 제네릭 메서드가 호출 경계를 막지 않는지 봅니다.

호출 비용

동적 디스패치 비용을 받아들일 수 있는지 판단합니다.

소유 형태

Box, Rc, 참조 중 수명 주기에 맞는 포인터를 고릅니다.

trait object 조건: 타입 목록이 열려 있고 같은 컨테이너에 담아야 하며, 객체 안전 규칙을 만족하는 트레이트인지 확인합니다.