Skip to main content

Module altrep_data

Module altrep_data 

Source
Expand description

High-level ALTREP data traits.

These traits let you implement ALTREP behavior using &self methods instead of raw SEXP callbacks. The library provides blanket implementations that handle the SEXP extraction automatically.

§Quick Start

For common types, just use them directly:

// Vec<i32> already implements AltIntegerData
let altrep = create_altinteger(vec![1, 2, 3, 4, 5]);

For custom types, implement the relevant trait:

struct Fibonacci { len: usize }

impl AltrepLen for Fibonacci {
    fn len(&self) -> usize { self.len }
}

impl AltIntegerData for Fibonacci {
    fn elt(&self, i: usize) -> i32 {
        // Compute fibonacci(i)
        unimplemented!()
    }
}

For simple field-based types, the Altrep* derive macros provide a shorter path: they auto-implement AltrepLen and the matching Alt*Data trait, and can optionally call the low-level impl_alt*_from_data! helpers.

Modules§

builtins 🔒
Built-in ALTREP data implementations for standard Rust types.
core 🔒
Core ALTREP data traits and helpers.
iter 🔒
Iterator-backed ALTREP data types.
macros
Helper macros for implementing ALTREP data traits. Convenience macros for implementing InferBase.
stream 🔒
Streaming ALTREP data backed by chunk-cached reader closures.
traits 🔒
Per-family ALTREP data traits.

Structs§

IterComplexData
Iterator-backed complex number vector.
IterIntCoerceData
Iterator-backed integer vector with coercion from any integer-like type.
IterIntData
Iterator-backed integer vector data.
IterIntFromBoolData
Iterator-backed integer vector with coercion from bool.
IterListData
Iterator-backed list vector.
IterLogicalData
Iterator-backed logical vector data.
IterRawData
Iterator-backed raw (u8) vector data.
IterRealCoerceData
Iterator-backed real vector with coercion from any float-like type.
IterRealData
Iterator-backed real (f64) vector data.
IterState
Core state for iterator-backed ALTREP vectors.
IterStringData
Iterator-backed string vector.
SparseIterComplexData
Sparse iterator-backed complex number vector.
SparseIterIntData
Sparse iterator-backed integer vector data.
SparseIterLogicalData
Sparse iterator-backed logical vector data.
SparseIterRawData
Sparse iterator-backed raw (u8) vector data.
SparseIterRealData
Sparse iterator-backed real (f64) vector data.
SparseIterState
Core state for sparse iterator-backed ALTREP vectors.
StreamingIntData
Streaming ALTREP for integer (i32) vectors.
StreamingRealData
Streaming ALTREP for real (f64) vectors.
WindowedIterIntData
Windowed iterator-backed integer vector data.
WindowedIterRealData
Windowed iterator-backed real (f64) vector data.
WindowedIterState
Core state for windowed iterator-backed ALTREP vectors.

Enums§

Logical
Logical value: TRUE, FALSE, or NA.
Sortedness
Sortedness hint for ALTREP vectors.

Traits§

AltComplexData
Trait for types that can back an ALTCOMPLEX vector.
AltIntegerData
Trait for types that can back an ALTINTEGER vector.
AltListData
Trait for types that can back an ALTLIST vector.
AltLogicalData
Trait for types that can back an ALTLOGICAL vector.
AltRawData
Trait for types that can back an ALTRAW vector.
AltRealData
Trait for types that can back an ALTREAL vector.
AltStringData
Trait for types that can back an ALTSTRING vector.
AltrepDataptr
Trait for ALTREP types that can expose a data pointer.
AltrepExtract
How to extract a reference to Self from an ALTREP SEXP’s data1 slot.
AltrepExtractSubset
Trait for ALTREP types that can provide optimized subsetting.
AltrepLen
Base trait for ALTREP data types. All ALTREP types must provide length.
AltrepSerialize
Trait for ALTREP types that support serialization.
InferBase
Trait for inferring the R base type from a data type’s implemented traits.

Functions§

materialize_altrep_data2
Materialize an ALTREP SEXP into a plain R vector in data2.