enum SlotKind {
RawSexp,
ScalarInt,
ScalarReal,
ScalarLogical,
ScalarRaw,
Conversion,
}Expand description
The kind of sidecar slot, determining how getter/setter FFI functions are generated.
Each kind maps to a different codegen strategy for reading from and writing to
the Rust struct through R’s .Call interface:
- Raw SEXP: no conversion, direct pass-through.
- Zero-overhead scalars: use R’s
Rf_Scalar*/Rf_as*for single-element coercion. - Conversion: use the
IntoR/TryFromSexptraits for arbitrary types.
Variants§
RawSexp
SEXP type – raw SEXP access (getter returns SEXP, setter takes SEXP).
ScalarInt
Zero-overhead scalar: i32 (or i16/i8) stored as INTEGER(1).
ScalarReal
Zero-overhead scalar: f64 (or f32) stored as REAL(1).
ScalarLogical
Zero-overhead scalar: bool (or Rbool) stored as LOGICAL(1).
ScalarRaw
Zero-overhead scalar: u8 stored as RAW(1).
Conversion
Conversion type – uses IntoR/TryFromSexp traits for arbitrary Rust types.
Trait Implementations§
Source§impl Eq for SlotKind
impl Eq for SlotKind
Source§#[doc(hidden)]fn assert_fields_are_eq(&self)
#[doc(hidden)]fn assert_fields_are_eq(&self)
derive_eq_internals)1.0.0 (const: unstable) · Source§#[doc(hidden)]fn assert_receiver_is_total_eq(&self)
#[doc(hidden)]fn assert_receiver_is_total_eq(&self)
implementation detail of #[derive(Eq)]
impl Copy for SlotKind
impl StructuralPartialEq for SlotKind
impl TrivialClone for SlotKind
Auto Trait Implementations§
impl Freeze for SlotKind
impl RefUnwindSafe for SlotKind
impl Send for SlotKind
impl Sync for SlotKind
impl Unpin for SlotKind
impl UnsafeUnpin for SlotKind
impl UnwindSafe for SlotKind
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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 moreimpl<T> Printable for T
Layout§
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: 1 byte
Size for each variant:
RawSexp: 0 bytesScalarInt: 0 bytesScalarReal: 0 bytesScalarLogical: 0 bytesScalarRaw: 0 bytesConversion: 0 bytes