dyn Trait

trait object는 데이터 포인터와 vtable 포인터로 런타임 호출을 만든다

Box<dyn Trait>은 실제 값을 가리키는 포인터와 메서드 표를 함께 들고, 호출 때 vtable을 따라간다.

01 Box<dyn Draw>trait object 보관

구체 타입 숨김

02 data pointer실제 값 위치

Button 또는 SelectBox

03 vtable pointer메서드 주소 표

draw 구현 찾기

04 dynamic call런타임 dispatch

타입 혼합 가능

구분의미판단
generic컴파일 시 타입 고정빠름, 한 컨테이너에 한 타입
dyn Trait런타임 호출서로 다른 타입을 한 컬렉션에
비용간접 호출유연성과 교환

핵심 trait object는 “어떤 타입인지 숨기되 어떤 메서드를 부를 수 있는지”는 유지하는 구조다.