struct AltrepFamilyConfig<'a> {
macro_base: &'a str,
dataptr_macro: Option<(&'a str, Option<TokenStream>)>,
string_dataptr: bool,
subset: bool,
methods_macro: &'a str,
inferbase_macro: &'a str,
default_guard: &'a str,
}Expand description
Per-family configuration controlling low-level code generation for an ALTREP type family.
Each ALTREP family (integer, real, logical, raw, string, complex, list) has a distinct
set of runtime macros for trait implementations and different capabilities (e.g., only
some families support dataptr or subset). This struct captures those differences
so AltrepAttrs::generate_lowlevel can emit the correct code.
Fields§
§macro_base: &'a strName of the impl_alt*_from_data! runtime macro used on the simple (non-expanded) path.
For example, "impl_altinteger_from_data" for the integer family.
dataptr_macro: Option<(&'a str, Option<TokenStream>)>If this family supports a typed dataptr materialization macro, the tuple contains:
- The macro name (e.g.,
"__impl_altvec_dataptr") - An optional element type token stream (e.g.,
i32for integer,f64for real)
None means this family does not have a typed dataptr macro (e.g., list).
string_dataptr: boolWhether this family supports the string-specific dataptr materialization macro
(__impl_altvec_string_dataptr). Only true for the String family.
subset: boolWhether this family supports the subset option for Extract_subset method
registration. false for List (which rejects subset and dataptr).
methods_macro: &'a strName of the internal macro for type-specific method implementations
(e.g., "__impl_altinteger_methods" for integer).
inferbase_macro: &'a strName of the impl_inferbase_*! macro that provides InferBase for this family
(e.g., "impl_inferbase_integer").
default_guard: &'a strDefault guard mode for this family when no explicit guard is specified.
String family uses RUnwind because elt/dataptr call R APIs (Rf_mkCharLenCE).
All families now default to RUnwind.
Auto Trait Implementations§
impl<'a> Freeze for AltrepFamilyConfig<'a>
impl<'a> RefUnwindSafe for AltrepFamilyConfig<'a>
impl<'a> !Send for AltrepFamilyConfig<'a>
impl<'a> !Sync for AltrepFamilyConfig<'a>
impl<'a> Unpin for AltrepFamilyConfig<'a>
impl<'a> UnsafeUnpin for AltrepFamilyConfig<'a>
impl<'a> UnwindSafe for AltrepFamilyConfig<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> SizedTypeProperties for T
impl<T> SizedTypeProperties for T
Source§#[doc(hidden)]const SIZE: usize = _
#[doc(hidden)]const SIZE: usize = _
sized_type_properties)Source§#[doc(hidden)]const ALIGN: usize = _
#[doc(hidden)]const ALIGN: usize = _
sized_type_properties)Source§#[doc(hidden)]const ALIGNMENT: Alignment = _
#[doc(hidden)]const ALIGNMENT: Alignment = _
ptr_alignment_type)Source§#[doc(hidden)]const IS_ZST: bool = _
#[doc(hidden)]const IS_ZST: bool = _
sized_type_properties)Source§#[doc(hidden)]const LAYOUT: Layout = _
#[doc(hidden)]const LAYOUT: Layout = _
sized_type_properties)Source§#[doc(hidden)]const MAX_SLICE_LEN: usize = _
#[doc(hidden)]const MAX_SLICE_LEN: usize = _
sized_type_properties)[Self]. Read moreLayout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 120 bytes