pub(crate) enum SlotKind {
Sidecar(usize),
Computed(Path),
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 and writing the
slot through R’s .Call interface:
Sidecar: a value in the external pointer’s protection list, validated withTryFromSexp::<T>on write and stored as R gave it.- Scalars: a struct field, read into R with
Rf_Scalar*, written withRf_as*. - Conversion: a struct field, converted with the
IntoR/TryFromSexptraits. - Computed: no field; a getter function of the Rust value, no setter.
Variants§
Sidecar(usize)
Sidecar<T> field: the value at this position among the type’s
Sidecar fields, kept in the external pointer’s protection list
(getter returns it, setter validates value as a T and stores it
there).
Computed(Path)
Computed marker field: the getter calls this function, a
fn(&Self) -> impl IntoR (a leading Self already replaced by the
struct’s name), on the live Rust value; there is no setter (#1883).
ScalarInt
Scalar struct field i32 (or i16/i8), returned as a length-1 integer.
ScalarReal
Scalar struct field f64 (or f32), returned as a length-1 double.
ScalarLogical
Scalar struct field bool (or Rbool), returned as a length-1 logical.
ScalarRaw
Scalar struct field u8, returned as a length-1 raw.
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 StructuralPartialEq for SlotKind
Auto Trait Implementations§
impl !Send for SlotKind
impl !Sync for SlotKind
impl Freeze for SlotKind
impl RefUnwindSafe 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> SizeHint for Twhere
T: ?Sized,
impl<T> SizeHint for Twhere
T: ?Sized,
Source§default fn lower_bound(&self) -> usize
default fn lower_bound(&self) -> usize
core_io_internals)[u8; 12] could return any value between 0 and
12 inclusively as a correct implementation. Read moreSource§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: 56 bytes
Size for each variant:
Sidecar: 16 bytesComputed: 56 bytesScalarInt: 0 bytesScalarReal: 0 bytesScalarLogical: 0 bytesScalarRaw: 0 bytesConversion: 0 bytes