Skip to main content

impl_builtin_altrep_family

Macro impl_builtin_altrep_family 

Source
#[doc(hidden)]
macro_rules! impl_builtin_altrep_family { ($ty:ty, integer, dataptr, $reg_fn:ident, $entry_ident:ident) => { ... }; ($ty:ty, real, dataptr, $reg_fn:ident, $entry_ident:ident) => { ... }; ($ty:ty, logical, dataptr, $reg_fn:ident, $entry_ident:ident) => { ... }; ($ty:ty, raw, dataptr, $reg_fn:ident, $entry_ident:ident) => { ... }; ($ty:ty, string, dataptr, $reg_fn:ident, $entry_ident:ident) => { ... }; ($ty:ty, complex, dataptr, $reg_fn:ident, $entry_ident:ident) => { ... }; ($ty:ty, integer, materializing, $reg_fn:ident, $entry_ident:ident) => { ... }; ($ty:ty, real, materializing, $reg_fn:ident, $entry_ident:ident) => { ... }; ($ty:ty, logical, materializing, $reg_fn:ident, $entry_ident:ident) => { ... }; ($ty:ty, raw, materializing, $reg_fn:ident, $entry_ident:ident) => { ... }; ($ty:ty, string, materializing, $reg_fn:ident, $entry_ident:ident) => { ... }; ($ty:ty, complex, materializing, $reg_fn:ident, $entry_ident:ident) => { ... }; }
Expand description

Generate ALTREP trait impls AND a linkme MX_ALTREP_REGISTRATIONS entry for a builtin type.

§Arguments

  • $ty:ty — the builtin container type (e.g. Vec<i32>, Box<[f64]>)
  • $family:ident — ALTREP family token: integer, real, logical, raw, string, or complex
  • $mode:ident — dataptr mode: dataptr or materializing
  • $reg_fn:ident — unique #[no_mangle] name for the registration fn (convention: __mx_altrep_reg_builtin_<sym>)
  • $entry_ident:ident — unique name for the linkme static (convention: __MX_ALTREP_REG_ENTRY_builtin_<sym>)

Both identifier arguments must be globally unique across all call sites. The registration fn is always emitted; the #[distributed_slice] attribute is guarded by cfg_attr(not(target_arch = "wasm32"), ...) so linkme’s compile-error arm is not reached on wasm32 targets.