pub type ErasedExternalPtr = ExternalPtr<()>;Expand description
Type-erased ExternalPtr for cases where the concrete T is not needed.
Aliased Type§
#[repr(C)]pub struct ErasedExternalPtr {
sexp: SEXP,
cached_ptr: NonNull<()>,
_marker: PhantomData<()>,
}Fields§
§sexp: SEXP§cached_ptr: NonNull<()>Cached data pointer, set once at construction time.
This avoids the R_ExternalPtrAddr FFI call on every as_ref()/as_mut().
The pointer remains valid for the lifetime of the ExternalPtr because:
- R’s finalizer only runs after R garbage-collects the SEXP (which cannot
happen while a Rust
ExternalPtrvalue exists). R_ClearExternalPtris only called in methods that consume or finalize (into_raw,into_inner,release_any).
_marker: PhantomData<()>