Skip to main content

InferBase

Trait InferBase 

Source
pub trait InferBase {
    const BASE: RBase;

    // Required methods
    unsafe fn make_class(
        class_name: *const i8,
        pkg_name: *const i8,
    ) -> R_altrep_class_t;
    unsafe fn install_methods(cls: R_altrep_class_t);
}
Expand description

Trait for inferring the R base type from a data type’s implemented traits.

This is automatically implemented via blanket impls for types that implement one of the Alt*Data traits. It allows the #[miniextendr] macro to infer the base type without requiring an explicit base = \"...\" attribute.

Required Associated Constants§

Source

const BASE: RBase

The inferred R base type.

Required Methods§

Source

unsafe fn make_class( class_name: *const i8, pkg_name: *const i8, ) -> R_altrep_class_t

Create the ALTREP class handle.

§Safety

Must be called during R initialization.

Source

unsafe fn install_methods(cls: R_altrep_class_t)

Install ALTREP methods on the class.

§Safety

Must be called during R initialization with a valid class handle.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl InferBase for &'static [&'static str]

Source§

const BASE: RBase = crate::altrep::RBase::String

Source§

unsafe fn make_class( class_name: *const i8, pkg_name: *const i8, ) -> R_altrep_class_t

Source§

unsafe fn install_methods(cls: R_altrep_class_t)

Source§

impl InferBase for &'static [String]

Source§

const BASE: RBase = crate::altrep::RBase::String

Source§

unsafe fn make_class( class_name: *const i8, pkg_name: *const i8, ) -> R_altrep_class_t

Source§

unsafe fn install_methods(cls: R_altrep_class_t)

Source§

impl InferBase for &'static [bool]

Source§

const BASE: RBase = crate::altrep::RBase::Logical

Source§

unsafe fn make_class( class_name: *const i8, pkg_name: *const i8, ) -> R_altrep_class_t

Source§

unsafe fn install_methods(cls: R_altrep_class_t)

Source§

impl InferBase for &'static [f64]

Source§

const BASE: RBase = crate::altrep::RBase::Real

Source§

unsafe fn make_class( class_name: *const i8, pkg_name: *const i8, ) -> R_altrep_class_t

Source§

unsafe fn install_methods(cls: R_altrep_class_t)

Source§

impl InferBase for &'static [i32]

Source§

const BASE: RBase = crate::altrep::RBase::Int

Source§

unsafe fn make_class( class_name: *const i8, pkg_name: *const i8, ) -> R_altrep_class_t

Source§

unsafe fn install_methods(cls: R_altrep_class_t)

Source§

impl InferBase for &'static [u8]

Source§

const BASE: RBase = crate::altrep::RBase::Raw

Source§

unsafe fn make_class( class_name: *const i8, pkg_name: *const i8, ) -> R_altrep_class_t

Source§

unsafe fn install_methods(cls: R_altrep_class_t)

Source§

impl InferBase for Box<[Rcomplex]>

Source§

const BASE: RBase = crate::altrep::RBase::Complex

Source§

unsafe fn make_class( class_name: *const i8, pkg_name: *const i8, ) -> R_altrep_class_t

Source§

unsafe fn install_methods(cls: R_altrep_class_t)

Source§

impl InferBase for Box<[String]>

Source§

const BASE: RBase = crate::altrep::RBase::String

Source§

unsafe fn make_class( class_name: *const i8, pkg_name: *const i8, ) -> R_altrep_class_t

Source§

unsafe fn install_methods(cls: R_altrep_class_t)

Source§

impl InferBase for Box<[bool]>

Source§

const BASE: RBase = crate::altrep::RBase::Logical

Source§

unsafe fn make_class( class_name: *const i8, pkg_name: *const i8, ) -> R_altrep_class_t

Source§

unsafe fn install_methods(cls: R_altrep_class_t)

Source§

impl InferBase for Box<[f64]>

Source§

const BASE: RBase = crate::altrep::RBase::Real

Source§

unsafe fn make_class( class_name: *const i8, pkg_name: *const i8, ) -> R_altrep_class_t

Source§

unsafe fn install_methods(cls: R_altrep_class_t)

Source§

impl InferBase for Box<[i32]>

Source§

const BASE: RBase = crate::altrep::RBase::Int

Source§

unsafe fn make_class( class_name: *const i8, pkg_name: *const i8, ) -> R_altrep_class_t

Source§

unsafe fn install_methods(cls: R_altrep_class_t)

Source§

impl InferBase for Box<[u8]>

Source§

const BASE: RBase = crate::altrep::RBase::Raw

Source§

unsafe fn make_class( class_name: *const i8, pkg_name: *const i8, ) -> R_altrep_class_t

Source§

unsafe fn install_methods(cls: R_altrep_class_t)

Source§

impl InferBase for Cow<'static, [Rcomplex]>

Source§

const BASE: RBase = crate::altrep::RBase::Complex

Source§

unsafe fn make_class( class_name: *const i8, pkg_name: *const i8, ) -> R_altrep_class_t

Source§

unsafe fn install_methods(cls: R_altrep_class_t)

Source§

impl InferBase for Cow<'static, [f64]>

Source§

const BASE: RBase = crate::altrep::RBase::Real

Source§

unsafe fn make_class( class_name: *const i8, pkg_name: *const i8, ) -> R_altrep_class_t

Source§

unsafe fn install_methods(cls: R_altrep_class_t)

Source§

impl InferBase for Cow<'static, [i32]>

Source§

const BASE: RBase = crate::altrep::RBase::Int

Source§

unsafe fn make_class( class_name: *const i8, pkg_name: *const i8, ) -> R_altrep_class_t

Source§

unsafe fn install_methods(cls: R_altrep_class_t)

Source§

impl InferBase for Cow<'static, [u8]>

Source§

const BASE: RBase = crate::altrep::RBase::Raw

Source§

unsafe fn make_class( class_name: *const i8, pkg_name: *const i8, ) -> R_altrep_class_t

Source§

unsafe fn install_methods(cls: R_altrep_class_t)

Source§

impl InferBase for Range<f64>

Source§

const BASE: RBase = crate::altrep::RBase::Real

Source§

unsafe fn make_class( class_name: *const i8, pkg_name: *const i8, ) -> R_altrep_class_t

Source§

unsafe fn install_methods(cls: R_altrep_class_t)

Source§

impl InferBase for Range<i32>

Source§

const BASE: RBase = crate::altrep::RBase::Int

Source§

unsafe fn make_class( class_name: *const i8, pkg_name: *const i8, ) -> R_altrep_class_t

Source§

unsafe fn install_methods(cls: R_altrep_class_t)

Source§

impl InferBase for Range<i64>

Source§

const BASE: RBase = crate::altrep::RBase::Int

Source§

unsafe fn make_class( class_name: *const i8, pkg_name: *const i8, ) -> R_altrep_class_t

Source§

unsafe fn install_methods(cls: R_altrep_class_t)

Source§

impl InferBase for Vec<Cow<'static, str>>

Source§

const BASE: RBase = crate::altrep::RBase::String

Source§

unsafe fn make_class( class_name: *const i8, pkg_name: *const i8, ) -> R_altrep_class_t

Source§

unsafe fn install_methods(cls: R_altrep_class_t)

Source§

impl InferBase for Vec<Option<Cow<'static, str>>>

Source§

const BASE: RBase = crate::altrep::RBase::String

Source§

unsafe fn make_class( class_name: *const i8, pkg_name: *const i8, ) -> R_altrep_class_t

Source§

unsafe fn install_methods(cls: R_altrep_class_t)

Source§

impl InferBase for Vec<Option<String>>

Source§

const BASE: RBase = crate::altrep::RBase::String

Source§

unsafe fn make_class( class_name: *const i8, pkg_name: *const i8, ) -> R_altrep_class_t

Source§

unsafe fn install_methods(cls: R_altrep_class_t)

Source§

impl InferBase for Vec<Rcomplex>

Source§

const BASE: RBase = crate::altrep::RBase::Complex

Source§

unsafe fn make_class( class_name: *const i8, pkg_name: *const i8, ) -> R_altrep_class_t

Source§

unsafe fn install_methods(cls: R_altrep_class_t)

Source§

impl InferBase for Vec<String>

Source§

const BASE: RBase = crate::altrep::RBase::String

Source§

unsafe fn make_class( class_name: *const i8, pkg_name: *const i8, ) -> R_altrep_class_t

Source§

unsafe fn install_methods(cls: R_altrep_class_t)

Source§

impl InferBase for Vec<bool>

Source§

const BASE: RBase = crate::altrep::RBase::Logical

Source§

unsafe fn make_class( class_name: *const i8, pkg_name: *const i8, ) -> R_altrep_class_t

Source§

unsafe fn install_methods(cls: R_altrep_class_t)

Source§

impl InferBase for Vec<f64>

Source§

const BASE: RBase = crate::altrep::RBase::Real

Source§

unsafe fn make_class( class_name: *const i8, pkg_name: *const i8, ) -> R_altrep_class_t

Source§

unsafe fn install_methods(cls: R_altrep_class_t)

Source§

impl InferBase for Vec<i32>

Source§

const BASE: RBase = crate::altrep::RBase::Int

Source§

unsafe fn make_class( class_name: *const i8, pkg_name: *const i8, ) -> R_altrep_class_t

Source§

unsafe fn install_methods(cls: R_altrep_class_t)

Source§

impl InferBase for Vec<u8>

Source§

const BASE: RBase = crate::altrep::RBase::Raw

Source§

unsafe fn make_class( class_name: *const i8, pkg_name: *const i8, ) -> R_altrep_class_t

Source§

unsafe fn install_methods(cls: R_altrep_class_t)

Source§

impl<const N: usize> InferBase for [Rcomplex; N]

Source§

const BASE: RBase = crate::altrep::RBase::Complex

Source§

unsafe fn make_class( class_name: *const i8, pkg_name: *const i8, ) -> R_altrep_class_t

Source§

unsafe fn install_methods(cls: R_altrep_class_t)

Source§

impl<const N: usize> InferBase for [String; N]

Source§

const BASE: RBase = crate::altrep::RBase::String

Source§

unsafe fn make_class( class_name: *const i8, pkg_name: *const i8, ) -> R_altrep_class_t

Source§

unsafe fn install_methods(cls: R_altrep_class_t)

Source§

impl<const N: usize> InferBase for [bool; N]

Source§

const BASE: RBase = crate::altrep::RBase::Logical

Source§

unsafe fn make_class( class_name: *const i8, pkg_name: *const i8, ) -> R_altrep_class_t

Source§

unsafe fn install_methods(cls: R_altrep_class_t)

Source§

impl<const N: usize> InferBase for [f64; N]

Source§

const BASE: RBase = crate::altrep::RBase::Real

Source§

unsafe fn make_class( class_name: *const i8, pkg_name: *const i8, ) -> R_altrep_class_t

Source§

unsafe fn install_methods(cls: R_altrep_class_t)

Source§

impl<const N: usize> InferBase for [i32; N]

Source§

const BASE: RBase = crate::altrep::RBase::Int

Source§

unsafe fn make_class( class_name: *const i8, pkg_name: *const i8, ) -> R_altrep_class_t

Source§

unsafe fn install_methods(cls: R_altrep_class_t)

Source§

impl<const N: usize> InferBase for [u8; N]

Source§

const BASE: RBase = crate::altrep::RBase::Raw

Source§

unsafe fn make_class( class_name: *const i8, pkg_name: *const i8, ) -> R_altrep_class_t

Source§

unsafe fn install_methods(cls: R_altrep_class_t)

Implementors§