enum RTypeCheck {
ScalarNumeric,
ScalarNonNeg,
Scalar(&'static str),
VectorNumeric,
Vector(&'static str),
Nullable(Box<RTypeCheck>),
List,
}Expand description
Classification of an R-side type check for a function parameter.
Each variant maps to a specific set of stopifnot() assertions. Numeric checks
use a broad predicate (is.numeric || is.logical || is.raw) because R coerces
logical to numeric freely and raw to integer is valid for byte-sized types.
Borderline cases (e.g., raw to i64 in strict mode) pass the precondition and
reach Rust’s strict checker, which produces better contextual error messages.
Variants§
ScalarNumeric
Numeric scalar: type check + length-1 check (2 assertions).
Used for i32, f64, f32, i8, i16, i64, isize.
ScalarNonNeg
Non-negative numeric scalar: type + length-1 + >= 0 (3 assertions).
Used for u16, u32, u64, usize.
Scalar(&'static str)
Non-numeric scalar: is.<type>(x) + length-1 check (2 assertions).
The string is the R type predicate name (e.g., "logical", "character").
VectorNumeric
Numeric vector: type check only, no length constraint (1 assertion).
Vector(&'static str)
Non-numeric vector: is.<type>(x) only (1 assertion).
The string is the R type predicate name.
Nullable(Box<RTypeCheck>)
Nullable wrapper around an inner check: prepends is.null(x) || to each assertion
and adjusts messages to mention NULL.
List
List check: is.list(x) (1 assertion).
Used for HashMap, BTreeMap, NamedList, List, ListMut.
Implementations§
Source§impl RTypeCheck
impl RTypeCheck
Sourcefn assertions(&self, param: &str) -> Vec<RAssertion>
fn assertions(&self, param: &str) -> Vec<RAssertion>
Produce the individual stopifnot() assertions for this type check.
Returns one or more RAssertion values, each representing a single
"message" = condition entry in the stopifnot() call. The param
argument is the R parameter name to use in messages and conditions.
Auto Trait Implementations§
impl Freeze for RTypeCheck
impl RefUnwindSafe for RTypeCheck
impl Send for RTypeCheck
impl Sync for RTypeCheck
impl Unpin for RTypeCheck
impl UnsafeUnpin for RTypeCheck
impl UnwindSafe for RTypeCheck
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: 24 bytes
Size for each variant:
ScalarNumeric: 0 bytesScalarNonNeg: 0 bytesScalar: 16 bytesVectorNumeric: 0 bytesVector: 16 bytesNullable: 8 bytesList: 0 bytes