Type Alias servo_arc::ThinArc

source ·
pub type ThinArc<H, T> = Arc<HeaderSlice<H, T>>;
Expand description

This is functionally equivalent to Arc<(H, [T])>

When you create an Arc containing a dynamically sized type like a slice, the Arc is represented on the stack as a “fat pointer”, where the length of the slice is stored alongside the Arc’s pointer. In some situations you may wish to have a thin pointer instead, perhaps for FFI compatibility or space efficiency. ThinArc solves this by storing the length in the allocation itself, via HeaderSlice.

Aliased Type§

struct ThinArc<H, T> {
    pub(crate) p: NonNull<ArcInner<HeaderSlice<H, T>>>,
    pub(crate) phantom: PhantomData<HeaderSlice<H, T>>,
}

Fields§

§p: NonNull<ArcInner<HeaderSlice<H, T>>>§phantom: PhantomData<HeaderSlice<H, T>>