Rust · DST

DST는 포인터 뒤에 놓인다

크기를 알 수 없는 타입은 값 자체로 다루지 않고, 메타데이터가 붙은 포인터 뒤에서 사용합니다.

동적 크기 타입 사용 구조

?Sized

unsized value

str이나 dyn Trait 자체는 스택 변수로 놓기 어렵습니다.

fat pointer

주소와 길이 또는 vtable 메타데이터를 함께 들고 갑니다.

&str

문자열 데이터 위치와 길이로 슬라이스를 표현합니다.

&dyn Trait

데이터와 메서드 테이블을 함께 참조합니다.

?Sized bound

제네릭이 DST 참조를 받을 수 있게 완화합니다.

str/dyn Trait reference metadata fat pointer use behind ptr

정리

DST의 핵심은 크기 미정 값을 직접 옮기는 것이 아니라 포인터와 메타데이터로 뒤에서 다루는 방식입니다.