Pointee — 포인터 메타데이터 타입 제공 트레잇

Pointee — 포인터 메타데이터 타입 제공 트레잇

Pointee는 가리켜지는 어떤 타입의 포인터 메타데이터 타입을 제공하는 트레잇이에요. nightly 전용 실험 API(ptr_metadata, #81513)이에요.

출처: Rust 공식 문서

본문

pub trait Pointee {
    type Metadata: Debug + Copy + Send + Sync + Ord + Hash + Unpin + Freeze;
}

포인터 메타데이터(Pointer metadata)

Rust의 원시 포인터 타입과 참조 타입은 "두 부분(sized)으로 구성된다"고 말할 수 있어요. 즉 각 포인터 타입은 실제 데이터를 가리키는 포인터와, 그 데이터를 어떻게 사용할지 설명하는 메타데이터로 이뤄져 있어요.

// 연관 타입
type Metadata: Debug + Copy + Send + Sync + Ord + Hash + Unpin + Freeze;

예를 들어 [T]에 대한 포인터의 메타데이터는 슬라이스 길이(usize)이고, str에 대한 포인터의 메타데이터도 길이예요. dyn Trait에 대한 포인터의 메타데이터는 DynMetadata<Trait>예요. DST(동적 크기 타입)가 아닌 타입의 메타데이터는 ()이에요.

더 알아보기 (Learn more)