#[repr(transparent)]pub struct SEXP(pub *mut SEXPREC);Expand description
R’s pointer type for S-expressions.
This is a newtype wrapper around *mut SEXPREC that implements Send and Sync.
SEXP is just a handle (pointer) - the actual data it points to is managed by R’s
garbage collector and should only be accessed on R’s main thread.
§Safety
While SEXP is Send+Sync (allowing it to be passed between threads), the data
it points to must only be accessed on R’s main thread. The miniextendr runtime
enforces this through checked FFI wrappers and with_r_thread routing when
worker dispatch is selected.
§Equality Semantics
IMPORTANT: The derived PartialEq compares pointer equality, not semantic equality.
For proper R semantics (comparing object contents), use R_compute_identical.
// Pointer equality (fast, often wrong for R semantics)
if sexp1 == sexp2 { ... } // Only true if same pointer
// Semantic equality (correct R semantics)
if R_compute_identical(sexp1, sexp2, 16) != 0 { ... }Hash trait removed: SEXP no longer implements Hash because proper hashing
would require deep content inspection via R_compute_identical, which is too
expensive for general use. If you need SEXP as a HashMap key, use pointer identity:
// Store by pointer identity (common pattern for R symbol lookups)
let mut map: HashMap<*mut SEXPREC, Value> = HashMap::new();
map.insert(sexp.as_ptr(), value);Tuple Fields§
§0: *mut SEXPRECImplementations§
Source§impl SEXP
impl SEXP
Sourcepub const fn null() -> Self
pub const fn null() -> Self
Create a C null pointer SEXP (0x0).
This is not R’s NULL value (R_NilValue). R’s NULL is a real
heap-allocated singleton; a C null pointer is just address zero. Passing
SEXP::null() where R expects R_NilValue will corrupt R’s GC state
and likely segfault.
Use SEXP::nil() for R’s NULL. Only use null() for low-level
pointer initialization, ALTREP Sum/Min/Max “can’t compute” returns
(R checks != NULL, not != R_NilValue), or comparison against
uninitialized pointers.
See also: SEXP::nil(), SEXP::is_null_ptr(), SEXP::is_nil()
Sourcepub fn nil() -> Self
pub fn nil() -> Self
Return R’s NULL singleton (R_NilValue).
This is not a C null pointer — it points to R’s actual nil object
on the heap. Use this for .Call() return values, SEXP arguments to
R API functions, and any slot in R data structures.
See also: SEXP::null(), SEXP::is_nil(), SEXP::is_null_ptr()
Sourcepub const fn is_null_ptr(self) -> bool
pub const fn is_null_ptr(self) -> bool
Is this SEXP a C null pointer (address 0x0)?
This answers a pointer question, not an R question. An SEXP that R
hands you (a .Call() argument, a list element, an attribute) is never
a C null pointer: R’s NULL is the R_NilValue singleton, a real
object at a non-zero address. A C null pointer only shows up where C
code uses address zero for “nothing here”: an uninitialised static or
field (SEXP::null()), an ALTREP data1/data2 slot that was never
set, or an FFI function that returns NULL on failure.
To ask “is this R’s NULL?”, use SEXP::is_nil().
use miniextendr_api::SEXP;
let unset = SEXP::null();
assert!(unset.is_null_ptr());There is no SEXP::is_null(): the name read like a test for R’s
NULL, so it is gone on purpose.
use miniextendr_api::SEXP;
let unset = SEXP::null();
assert!(unset.is_null());See also: SEXP::is_nil(), SEXP::is_null_or_nil(), SEXP::null()
Sourcepub fn is_nil(self) -> bool
pub fn is_nil(self) -> bool
Is this SEXP R’s NULL (R_NilValue)?
This is the check for an R value: an optional argument that defaults
to NULL, an absent attribute, an empty list slot. It compares the
address against the R_NilValue singleton and never dereferences
self, so it is safe on a stale SEXP. A C null pointer is not R’s
NULL; for that, use SEXP::is_null_ptr().
use miniextendr_api::SEXP;
// `x` is an argument whose R default is `NULL`: `f()` and `f(NULL)`
// both arrive as `R_NilValue`.
fn given(x: SEXP) -> bool {
!x.is_nil()
}See also: SEXP::nil(), SEXP::is_null_ptr(), SEXP::is_null_or_nil()
Sourcepub fn is_null_or_nil(self) -> bool
pub fn is_null_or_nil(self) -> bool
Is this SEXP either a C null pointer or R’s NULL?
For a slot that can hold either kind of “nothing”: unset (address
zero) or set to R_NilValue, such as an external pointer’s protected
value. For an R value alone, SEXP::is_nil() is the right check.
use miniextendr_api::SEXP;
// A slot that was never set counts as empty.
assert!(SEXP::null().is_null_or_nil());See also: SEXP::is_nil(), SEXP::is_null_ptr()
Sourcepub fn blank_string() -> SEXP
pub fn blank_string() -> SEXP
R’s empty string "" singleton.
Sourcepub fn install_char(charsxp: SEXP) -> SEXP
pub fn install_char(charsxp: SEXP) -> SEXP
Create an R symbol (SYMSXP) from a CHARSXP.
Equivalent to Rf_installChar(charsxp). The symbol is interned
in R’s global symbol table and never garbage collected.
Sourcepub fn symbol(name: &str) -> SEXP
pub fn symbol(name: &str) -> SEXP
Create an R symbol (SYMSXP) from a Rust &str.
Combines SEXP::charsxp() + Rf_installChar into one call.
The symbol is interned and never garbage collected.
Sourcepub fn scalar_integer(x: i32) -> SEXP
pub fn scalar_integer(x: i32) -> SEXP
Create a length-1 integer vector.
Sourcepub fn scalar_real(x: f64) -> SEXP
pub fn scalar_real(x: f64) -> SEXP
Create a length-1 real vector.
Sourcepub fn scalar_logical(x: bool) -> SEXP
pub fn scalar_logical(x: bool) -> SEXP
Create a length-1 logical vector.
Produces only TRUE or FALSE; a bool cannot represent R’s NA.
For an NA logical, use scalar_logical_raw
with NA_LOGICAL (i32::MIN).
Sourcepub fn scalar_logical_raw(x: i32) -> SEXP
pub fn scalar_logical_raw(x: i32) -> SEXP
Create a length-1 logical vector from raw i32 (0=FALSE, 1=TRUE, NA_LOGICAL=NA).
Accepts 0 (FALSE), 1 (TRUE), or NA_LOGICAL (i32::MIN) for NA.
Prefer scalar_logical for non-NA values.
Sourcepub fn scalar_raw(x: u8) -> SEXP
pub fn scalar_raw(x: u8) -> SEXP
Create a length-1 raw vector.
Sourcepub fn scalar_complex(x: Rcomplex) -> SEXP
pub fn scalar_complex(x: Rcomplex) -> SEXP
Create a length-1 complex vector.
Sourcepub fn scalar_string(charsxp: SEXP) -> SEXP
pub fn scalar_string(charsxp: SEXP) -> SEXP
Create a length-1 character vector from a CHARSXP.
Sourcepub fn scalar_string_from_str(s: &str) -> SEXP
pub fn scalar_string_from_str(s: &str) -> SEXP
Create a length-1 character vector from a Rust &str.
Sourcepub unsafe fn scalar_integer_unchecked(x: i32) -> SEXP
pub unsafe fn scalar_integer_unchecked(x: i32) -> SEXP
Create a length-1 integer vector (unchecked — no thread routing).
§Safety
Must be called from the R main thread.
Sourcepub unsafe fn scalar_real_unchecked(x: f64) -> SEXP
pub unsafe fn scalar_real_unchecked(x: f64) -> SEXP
Create a length-1 real vector (unchecked — no thread routing).
§Safety
Must be called from the R main thread.
Sourcepub unsafe fn scalar_logical_raw_unchecked(x: i32) -> SEXP
pub unsafe fn scalar_logical_raw_unchecked(x: i32) -> SEXP
Create a length-1 logical vector from raw i32 (unchecked — no thread routing).
Accepts 0 (FALSE), 1 (TRUE), or NA_LOGICAL (i32::MIN) for NA.
§Safety
Must be called from the R main thread.
Sourcepub unsafe fn scalar_raw_unchecked(x: u8) -> SEXP
pub unsafe fn scalar_raw_unchecked(x: u8) -> SEXP
Create a length-1 raw vector (unchecked — no thread routing).
§Safety
Must be called from the R main thread.
Sourcepub unsafe fn scalar_complex_unchecked(x: Rcomplex) -> SEXP
pub unsafe fn scalar_complex_unchecked(x: Rcomplex) -> SEXP
Create a length-1 complex vector (unchecked — no thread routing).
§Safety
Must be called from the R main thread.
Sourcepub unsafe fn scalar_string_unchecked(charsxp: SEXP) -> SEXP
pub unsafe fn scalar_string_unchecked(charsxp: SEXP) -> SEXP
Create a length-1 character vector from a CHARSXP (unchecked — no thread routing).
§Safety
Must be called from the R main thread.
Sourcepub unsafe fn alloc(ty: SEXPTYPE, n: R_xlen_t) -> SEXP
pub unsafe fn alloc(ty: SEXPTYPE, n: R_xlen_t) -> SEXP
Allocate a fresh R vector of the given type and length.
Direct wrapper over Rf_allocVector. For typed allocations, prefer
helpers like SEXP::alloc_list, SEXP::alloc_strsxp, or wrap the
result in OwnedProtect immediately
— the returned SEXP is unprotected.
§Safety
Must be called from the R main thread. The returned SEXP is unprotected; any subsequent allocation may collect it.
Sourcepub unsafe fn alloc_list(n: R_xlen_t) -> SEXP
pub unsafe fn alloc_list(n: R_xlen_t) -> SEXP
Allocate an R list (VECSXP) of length n. Unprotected.
Equivalent to Rf_allocVector(VECSXP, n). Elements are initialised to R_NilValue.
§Safety
Must be called from the R main thread. The returned SEXP is unprotected —
wrap it in OwnedProtect before any
other allocation that could trigger GC.
Sourcepub unsafe fn alloc_strsxp(n: R_xlen_t) -> SEXP
pub unsafe fn alloc_strsxp(n: R_xlen_t) -> SEXP
Allocate an R character vector (STRSXP) of length n. Unprotected.
Equivalent to Rf_allocVector(STRSXP, n). Elements are initialised to R_BlankString.
§Safety
Must be called from the R main thread. The returned SEXP is unprotected —
wrap it in OwnedProtect before any
other allocation that could trigger GC.
Sourcepub fn names_symbol() -> SEXP
pub fn names_symbol() -> SEXP
R’s names attribute symbol.
Sourcepub fn dim_symbol() -> SEXP
pub fn dim_symbol() -> SEXP
R’s dim attribute symbol.
Sourcepub fn dimnames_symbol() -> SEXP
pub fn dimnames_symbol() -> SEXP
R’s dimnames attribute symbol.
Sourcepub fn class_symbol() -> SEXP
pub fn class_symbol() -> SEXP
R’s class attribute symbol.
Sourcepub fn levels_symbol() -> SEXP
pub fn levels_symbol() -> SEXP
R’s levels attribute symbol (factors).
Sourcepub fn tsp_symbol() -> SEXP
pub fn tsp_symbol() -> SEXP
R’s tsp attribute symbol (time series).
Sourcepub fn base_namespace() -> SEXP
pub fn base_namespace() -> SEXP
R’s base namespace environment.
Sourcepub fn missing_arg() -> SEXP
pub fn missing_arg() -> SEXP
R’s missing argument sentinel.
Sourcepub unsafe fn altrep_data1_raw(self) -> SEXP
pub unsafe fn altrep_data1_raw(self) -> SEXP
Get the raw SEXP in the ALTREP data1 slot.
§Safety
selfmust be a valid ALTREP SEXP- Must be called from the R main thread
Sourcepub unsafe fn altrep_data1_raw_unchecked(self) -> SEXP
pub unsafe fn altrep_data1_raw_unchecked(self) -> SEXP
Get the raw SEXP in the ALTREP data1 slot (unchecked — no thread routing).
§Safety
selfmust be a valid ALTREP SEXP- Must be called from the R main thread
Sourcepub unsafe fn set_altrep_data1(self, v: SEXP)
pub unsafe fn set_altrep_data1(self, v: SEXP)
Set the ALTREP data1 slot.
§Safety
selfmust be a valid ALTREP SEXP- Must be called from the R main thread
Sourcepub unsafe fn altrep_data2_raw(self) -> SEXP
pub unsafe fn altrep_data2_raw(self) -> SEXP
Get the raw SEXP in the ALTREP data2 slot.
§Safety
selfmust be a valid ALTREP SEXP- Must be called from the R main thread
Sourcepub unsafe fn altrep_data2_raw_unchecked(self) -> SEXP
pub unsafe fn altrep_data2_raw_unchecked(self) -> SEXP
Get the raw SEXP in the ALTREP data2 slot (unchecked — no thread routing).
§Safety
selfmust be a valid ALTREP SEXP- Must be called from the R main thread
Sourcepub unsafe fn set_altrep_data2(self, v: SEXP)
pub unsafe fn set_altrep_data2(self, v: SEXP)
Set the ALTREP data2 slot.
§Safety
selfmust be a valid ALTREP SEXP- Must be called from the R main thread
Sourcepub unsafe fn set_altrep_data2_unchecked(self, v: SEXP)
pub unsafe fn set_altrep_data2_unchecked(self, v: SEXP)
Set the ALTREP data2 slot (unchecked — no thread routing).
§Safety
selfmust be a valid ALTREP SEXP- Must be called from the R main thread
Trait Implementations§
Source§impl AltrepSexpExt for SEXP
impl AltrepSexpExt for SEXP
Source§unsafe fn altrep_data2_raw(&self) -> SEXP
unsafe fn altrep_data2_raw(&self) -> SEXP
Source§unsafe fn altrep_data2_raw_unchecked(&self) -> SEXP
unsafe fn altrep_data2_raw_unchecked(&self) -> SEXP
Source§unsafe fn set_altrep_data2(&self, data2: SEXP)
unsafe fn set_altrep_data2(&self, data2: SEXP)
Source§unsafe fn set_altrep_data2_unchecked(&self, data2: SEXP)
unsafe fn set_altrep_data2_unchecked(&self, data2: SEXP)
impl Copy for SEXP
Source§impl Eq for SEXP
impl Eq for SEXP
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)]
Source§impl From<CallerCall> for SEXP
impl From<CallerCall> for SEXP
Source§fn from(call: CallerCall) -> SEXP
fn from(call: CallerCall) -> SEXP
Source§impl IntoR for SEXP
impl IntoR for SEXP
Source§impl PairListExt for SEXP
impl PairListExt for SEXP
Source§fn cons(self, cdr: SEXP) -> SEXP
fn cons(self, cdr: SEXP) -> SEXP
CONS(self, cdr): this SEXP as its value, cdr
as the rest. The node is unprotected.Source§fn lcons(self, cdr: SEXP) -> SEXP
fn lcons(self, cdr: SEXP) -> SEXP
LCONS(self, cdr): this SEXP (the function) as its
value, cdr (the arguments) as the rest. The node is unprotected.Source§fn cdr(&self) -> SEXP
fn cdr(&self) -> SEXP
CDR): the next node, or
NULL after the last. On a call, its arguments.Source§fn args(&self) -> PairListArgs<'_> ⓘ
fn args(&self) -> PairListArgs<'_> ⓘ
(name, value). The name is None for an unnamed one; a repeated
name is kept. Read moreSource§unsafe fn cons_unchecked(self, cdr: SEXP) -> SEXP
unsafe fn cons_unchecked(self, cdr: SEXP) -> SEXP
Source§unsafe fn car_unchecked(&self) -> SEXP
unsafe fn car_unchecked(&self) -> SEXP
Source§unsafe fn cdr_unchecked(&self) -> SEXP
unsafe fn cdr_unchecked(&self) -> SEXP
Source§unsafe fn set_tag_unchecked(&self, tag: SEXP)
unsafe fn set_tag_unchecked(&self, tag: SEXP)
impl Send for SEXP
Source§impl SexpExt for SEXP
impl SexpExt for SEXP
Source§unsafe fn xlength_unchecked(&self) -> R_xlen_t
unsafe fn xlength_unchecked(&self) -> R_xlen_t
R_xlen_t without thread checks. Read moreSource§unsafe fn len_unchecked(&self) -> usize
unsafe fn len_unchecked(&self) -> usize
Source§unsafe fn as_slice<T: RNativeType>(&self) -> &'static [T]
unsafe fn as_slice<T: RNativeType>(&self) -> &'static [T]
Source§unsafe fn as_mut_slice<T: RNativeType>(&self) -> &'static mut [T]
unsafe fn as_mut_slice<T: RNativeType>(&self) -> &'static mut [T]
Source§unsafe fn as_slice_unchecked<T: RNativeType>(&self) -> &'static [T]
unsafe fn as_slice_unchecked<T: RNativeType>(&self) -> &'static [T]
Source§fn is_integer(&self) -> bool
fn is_integer(&self) -> bool
Source§fn is_logical(&self) -> bool
fn is_logical(&self) -> bool
Source§fn is_character(&self) -> bool
fn is_character(&self) -> bool
Source§fn is_complex(&self) -> bool
fn is_complex(&self) -> bool
Source§fn is_external_ptr(&self) -> bool
fn is_external_ptr(&self) -> bool
Source§fn is_environment(&self) -> bool
fn is_environment(&self) -> bool
Source§fn is_language(&self) -> bool
fn is_language(&self) -> bool
Source§fn is_pair_list(&self) -> bool
fn is_pair_list(&self) -> bool
Source§fn is_function(&self) -> bool
fn is_function(&self) -> bool
Source§fn is_data_frame(&self) -> bool
fn is_data_frame(&self) -> bool
Source§fn is_numeric(&self) -> bool
fn is_numeric(&self) -> bool
Source§fn is_number(&self) -> bool
fn is_number(&self) -> bool
Source§fn is_vector_atomic(&self) -> bool
fn is_vector_atomic(&self) -> bool
Source§fn is_vector_list(&self) -> bool
fn is_vector_list(&self) -> bool
Source§fn coerce(&self, target: SEXPTYPE) -> SEXP
fn coerce(&self, target: SEXPTYPE) -> SEXP
Source§fn get_dimnames(&self) -> SEXP
fn get_dimnames(&self) -> SEXP
dimnames attribute.Source§fn set_dimnames(&self, dimnames: SEXP)
fn set_dimnames(&self, dimnames: SEXP)
dimnames attribute.Source§fn get_levels(&self) -> SEXP
fn get_levels(&self) -> SEXP
levels attribute (factors).Source§fn set_levels(&self, levels: SEXP)
fn set_levels(&self, levels: SEXP)
levels attribute (factors).Source§fn get_row_names(&self) -> SEXP
fn get_row_names(&self) -> SEXP
row.names attribute.Source§fn set_row_names(&self, row_names: SEXP)
fn set_row_names(&self, row_names: SEXP)
row.names attribute.Source§fn copy_most_attrib(&self, from: SEXP)
fn copy_most_attrib(&self, from: SEXP)
from except names, dim and dimnames onto
this object, as R’s Rf_copyMostAttrib(from, self) does. Read moreSource§fn inherits_class(&self, class: &CStr) -> bool
fn inherits_class(&self, class: &CStr) -> bool
Source§fn has_attributes(&self) -> bool
fn has_attributes(&self) -> bool
Source§fn string_elt_str(&self, i: isize) -> Option<&str>
fn string_elt_str(&self, i: isize) -> Option<&str>
Option<&str>. Read moreSource§fn set_string_elt(&self, i: isize, charsxp: SEXP)
fn set_string_elt(&self, i: isize, charsxp: SEXP)
Source§fn is_na_string(&self) -> bool
fn is_na_string(&self) -> bool
NA_character_.Source§fn vector_elt(&self, i: isize) -> SEXP
fn vector_elt(&self, i: isize) -> SEXP
Source§fn integer_elt(&self, i: isize) -> i32
fn integer_elt(&self, i: isize) -> i32
Source§fn logical_elt(&self, i: isize) -> i32
fn logical_elt(&self, i: isize) -> i32
Source§fn complex_elt(&self, i: isize) -> Rcomplex
fn complex_elt(&self, i: isize) -> Rcomplex
Source§fn set_integer_elt(&self, i: isize, v: i32)
fn set_integer_elt(&self, i: isize, v: i32)
Source§fn set_real_elt(&self, i: isize, v: f64)
fn set_real_elt(&self, i: isize, v: f64)
Source§fn set_logical_elt(&self, i: isize, v: i32)
fn set_logical_elt(&self, i: isize, v: i32)
Source§fn set_complex_elt(&self, i: isize, v: Rcomplex)
fn set_complex_elt(&self, i: isize, v: Rcomplex)
Source§fn set_raw_elt(&self, i: isize, v: u8)
fn set_raw_elt(&self, i: isize, v: u8)
Source§fn r_char_str(&self) -> Option<&str>
fn r_char_str(&self) -> Option<&str>
&str from a CHARSXP. Returns None for NA_character_.Source§fn resize(&self, newlen: R_xlen_t) -> SEXP
fn resize(&self, newlen: R_xlen_t) -> SEXP
Source§fn shallow_duplicate(&self) -> SEXP
fn shallow_duplicate(&self) -> SEXP
Rf_shallow_duplicate(x).Source§fn is_identical(&self, other: SEXP) -> bool
fn is_identical(&self, other: SEXP) -> bool
Source§unsafe fn string_elt_unchecked(&self, i: isize) -> SEXP
unsafe fn string_elt_unchecked(&self, i: isize) -> SEXP
Source§unsafe fn set_string_elt_unchecked(&self, i: isize, charsxp: SEXP)
unsafe fn set_string_elt_unchecked(&self, i: isize, charsxp: SEXP)
Source§unsafe fn vector_elt_unchecked(&self, i: isize) -> SEXP
unsafe fn vector_elt_unchecked(&self, i: isize) -> SEXP
Source§unsafe fn set_vector_elt_unchecked(&self, i: isize, val: SEXP)
unsafe fn set_vector_elt_unchecked(&self, i: isize, val: SEXP)
Source§unsafe fn get_attr_unchecked(&self, name: SEXP) -> SEXP
unsafe fn get_attr_unchecked(&self, name: SEXP) -> SEXP
Source§unsafe fn set_attr_unchecked(&self, name: SEXP, val: SEXP)
unsafe fn set_attr_unchecked(&self, name: SEXP, val: SEXP)
Source§unsafe fn copy_most_attrib_unchecked(&self, from: SEXP)
unsafe fn copy_most_attrib_unchecked(&self, from: SEXP)
from except names, dim and dimnames
onto this object, as copy_most_attrib. No
thread check. Read moreimpl StructuralPartialEq for SEXP
impl Sync for SEXP
impl TrivialClone for SEXP
Source§impl TryFromSexp for SEXP
Pass-through conversion for raw SEXP values with ALTREP auto-materialization.
impl TryFromSexp for SEXP
Pass-through conversion for raw SEXP values with ALTREP auto-materialization.
This allows SEXP to be used directly in #[miniextendr] function signatures.
When R passes an ALTREP vector (e.g., 1:10, seq_len(N)),
ensure_materialized is called
automatically to force materialization on the R main thread. After this,
the SEXP’s data pointer is stable and safe to access from any thread.
§ALTREP handling
| Input | Result |
|---|---|
| Regular SEXP | Passed through unchanged |
| ALTREP SEXP | Materialized via ensure_materialized, then passed through |
To receive ALTREP without materializing, use
AltrepSexp as the parameter type instead.
To receive the raw SEXP without any conversion (including no materialization),
use extern "C-unwind".
§Safety
SEXP handles are only valid on R’s main thread. Standalone #[miniextendr]
functions taking a SEXP parameter run on the main thread automatically.
Source§fn try_from_sexp(sexp: SEXP) -> Result<Self, Self::Error>
fn try_from_sexp(sexp: SEXP) -> Result<Self, Self::Error>
Converts a SEXP, auto-materializing ALTREP vectors.
If the input is ALTREP, ensure_materialized
is called to force materialization on the R main thread. After
materialization the data pointer is stable and the SEXP can be safely
sent to other threads.
Source§unsafe fn try_from_sexp_unchecked(sexp: SEXP) -> Result<Self, Self::Error>
unsafe fn try_from_sexp_unchecked(sexp: SEXP) -> Result<Self, Self::Error>
Source§const NATIVE_BORROW: Option<NativeBorrow> = None
const NATIVE_BORROW: Option<NativeBorrow> = None
Source§const CHARACTER_ONLY: bool = false
const CHARACTER_ONLY: bool = false
NULL, is a character vector or a factor. Read moreSource§#[doc(hidden)]const __MX_EXPECTATION: Option<&'static str> = None
#[doc(hidden)]const __MX_EXPECTATION: Option<&'static str> = None
#[miniextendr] cannot tell from the type as written: the
<expected> of a failed conversion’s '<p>' must be <expected>: .... Read moreSource§#[doc(hidden)]unsafe fn __mx_try_from_rooted(root: Root<'_>) -> Result<Self, Self::Error>
#[doc(hidden)]unsafe fn __mx_try_from_rooted(root: Root<'_>) -> Result<Self, Self::Error>
Source§#[doc(hidden)]fn __mx_has_na(&self) -> bool
#[doc(hidden)]fn __mx_has_na(&self) -> bool
#[miniextendr(no_na)]
refuses after the conversion. Read moreSource§#[doc(hidden)]fn __mx_input_has_na(&self, input: SEXP) -> bool
#[doc(hidden)]fn __mx_input_has_na(&self, input: SEXP) -> bool
#[miniextendr(no_na)] refuses this converted argument, read
from input (the R value it converted from), when no R guard ran. Read moreSource§#[doc(hidden)]fn __mx_try_from_sexp_with_check(
sexp: SEXP,
check: &ElementCheck<'_>,
) -> Result<Self, SexpError>
#[doc(hidden)]fn __mx_try_from_sexp_with_check(
sexp: SEXP,
check: &ElementCheck<'_>,
) -> Result<Self, SexpError>
check, an element type’s
TryFromSexpElement::check_sexp,
on the R value that carries an element’s class (#1837). Read moreSource§#[doc(hidden)]unsafe fn __mx_try_from_sexp_unchecked_with_check(
sexp: SEXP,
check: &ElementCheck<'_>,
) -> Result<Self, SexpError>
#[doc(hidden)]unsafe fn __mx_try_from_sexp_unchecked_with_check(
sexp: SEXP,
check: &ElementCheck<'_>,
) -> Result<Self, SexpError>
Auto Trait Implementations§
impl Freeze for SEXP
impl RefUnwindSafe for SEXP
impl Unpin for SEXP
impl UnsafeUnpin for SEXP
impl UnwindSafe for SEXP
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,
impl<T> ConsumingFallible for Twhere
T: Clone,
Source§impl<I> OptionInner for I
impl<I> OptionInner for I
Source§const OPTION_NATIVE_BORROW: Option<NativeBorrow> = const OPTION_NATIVE_BORROW: Option<NativeBorrow> =
<Option<I> as TryFromSexp>::NATIVE_BORROW;
const OPTION_NATIVE_BORROW: Option<NativeBorrow> = const OPTION_NATIVE_BORROW: Option<NativeBorrow> = <Option<I> as TryFromSexp>::NATIVE_BORROW;
<Option<Self> as TryFromSexp>::NATIVE_BORROW.Source§const OPTION_CHARACTER_ONLY: bool = const OPTION_CHARACTER_ONLY: bool =
<Option<I> as TryFromSexp>::CHARACTER_ONLY;
const OPTION_CHARACTER_ONLY: bool = const OPTION_CHARACTER_ONLY: bool = <Option<I> as TryFromSexp>::CHARACTER_ONLY;
<Option<Self> as TryFromSexp>::CHARACTER_ONLY.impl<T> Printable for T
Source§impl<T> RCopy for Twhere
T: Copy,
impl<T> RCopy for Twhere
T: Copy,
Source§impl<T> RDebug for Twhere
T: Debug,
impl<T> RDebug for Twhere
T: Debug,
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: 8 bytes