DST는 값 자체가 아니라 메타데이터가 붙은 포인터 뒤에서 다룬다
str, [T], dyn Trait처럼 크기를 컴파일 시점에 모르는 타입은 참조나 Box 같은 포인터와 함께 사용한다.
&str
&[T]
&dyn Trait / Box<dyn Trait>
| 구분 | 의미 | 판단 |
|---|---|---|
| 스택 값 | 크기 필요 | DST 단독 불가 |
| fat pointer | 주소 + 메타데이터 | 동적 크기 정보 보관 |
| Box<dyn Trait> | 힙 값 + vtable | 소유 가능한 trait object |
| Sized bound | 기본 제네릭 제약 | ?Sized로 완화 가능 |
핵심 DST는 “크기 없음”이 아니라 “포인터가 추가 정보를 함께 들고 다닌다”이다.