pub struct IterListData<I>{
state: IterState<I, SEXP>,
}Expand description
Iterator-backed list vector.
Wraps an iterator producing R SEXP values and exposes it as an ALTREP list.
§Safety
The iterator must produce valid, protected SEXP values. Each SEXP must remain protected for the lifetime of the ALTREP object.
§Example
ⓘ
use miniextendr_api::altrep_data::IterListData;
use miniextendr_api::IntoR;
let iter = (0..5).map(|x| vec![x, x+1, x+2].into_sexp());
let data = IterListData::from_iter(iter, 5);Fields§
§state: IterState<I, SEXP>Implementations§
Source§impl<I> IterListData<I>
impl<I> IterListData<I>
Source§impl<I> IterListData<I>where
I: ExactSizeIterator<Item = SEXP>,
impl<I> IterListData<I>where
I: ExactSizeIterator<Item = SEXP>,
Sourcepub fn from_exact_iter(iter: I) -> Self
pub fn from_exact_iter(iter: I) -> Self
Create from an ExactSizeIterator (length auto-detected).
§Safety
The iterator must produce valid, protected SEXP values.
Trait Implementations§
Source§impl<I> AltListData for IterListData<I>
impl<I> AltListData for IterListData<I>
Source§impl<I: Iterator<Item = SEXP> + 'static> AltVec for IterListData<I>
impl<I: Iterator<Item = SEXP> + 'static> AltVec for IterListData<I>
Source§const HAS_DATAPTR: bool = false
const HAS_DATAPTR: bool = false
Set to
true to register dataptr.Source§const HAS_DATAPTR_OR_NULL: bool = false
const HAS_DATAPTR_OR_NULL: bool = false
Set to
true to register dataptr_or_null.Source§fn dataptr_or_null(_x: SEXP) -> *const c_void
fn dataptr_or_null(_x: SEXP) -> *const c_void
Get data pointer without forcing materialization.
Source§const HAS_EXTRACT_SUBSET: bool = false
const HAS_EXTRACT_SUBSET: bool = false
Set to
true to register extract_subset.Source§impl<I: Iterator<Item = SEXP> + 'static> Altrep for IterListData<I>
impl<I: Iterator<Item = SEXP> + 'static> Altrep for IterListData<I>
Source§fn length(x: SEXP) -> R_xlen_t
fn length(x: SEXP) -> R_xlen_t
Returns the length of the ALTREP vector.
This is REQUIRED - R cannot determine vector length without it.
Source§const GUARD: AltrepGuard = AltrepGuard::RUnwind
const GUARD: AltrepGuard = AltrepGuard::RUnwind
The guard mode for all ALTREP trampolines on this type. Read more
Source§const HAS_SERIALIZED_STATE: bool = false
const HAS_SERIALIZED_STATE: bool = false
Set to
true to register serialized_state.Source§fn serialized_state(_x: SEXP) -> SEXP
fn serialized_state(_x: SEXP) -> SEXP
Return serialization state.
Source§const HAS_UNSERIALIZE: bool = false
const HAS_UNSERIALIZE: bool = false
Set to
true to register unserialize.Source§const HAS_UNSERIALIZE_EX: bool = false
const HAS_UNSERIALIZE_EX: bool = false
Set to
true to register unserialize_ex.Source§fn unserialize_ex(
_class: SEXP,
_state: SEXP,
_attr: SEXP,
_objf: i32,
_levs: i32,
) -> SEXP
fn unserialize_ex( _class: SEXP, _state: SEXP, _attr: SEXP, _objf: i32, _levs: i32, ) -> SEXP
Extended unserialization with attributes.
Source§const HAS_DUPLICATE: bool = false
const HAS_DUPLICATE: bool = false
Set to
true to register duplicate.Source§const HAS_DUPLICATE_EX: bool = false
const HAS_DUPLICATE_EX: bool = false
Set to
true to register duplicate_ex.Source§const HAS_COERCE: bool = false
const HAS_COERCE: bool = false
Set to
true to register coerce.Source§const HAS_INSPECT: bool = false
const HAS_INSPECT: bool = false
Set to
true to register inspect.Source§impl<I> AltrepLen for IterListData<I>
impl<I> AltrepLen for IterListData<I>
Source§impl<I: Iterator<Item = SEXP> + 'static> InferBase for IterListData<I>
impl<I: Iterator<Item = SEXP> + 'static> InferBase for IterListData<I>
Source§unsafe fn make_class(
class_name: *const i8,
pkg_name: *const i8,
) -> R_altrep_class_t
unsafe fn make_class( class_name: *const i8, pkg_name: *const i8, ) -> R_altrep_class_t
Create the ALTREP class handle. Read more
Source§unsafe fn install_methods(cls: R_altrep_class_t)
unsafe fn install_methods(cls: R_altrep_class_t)
Install ALTREP methods on the class. Read more
Source§impl<I: Iterator<Item = SEXP> + 'static> TypedExternal for IterListData<I>
impl<I: Iterator<Item = SEXP> + 'static> TypedExternal for IterListData<I>
Source§const TYPE_NAME: &'static str = "IterListData"
const TYPE_NAME: &'static str = "IterListData"
The type name as a static string (for debugging and display)
Source§const TYPE_NAME_CSTR: &'static [u8] = b"IterListData\0"
const TYPE_NAME_CSTR: &'static [u8] = b"IterListData\0"
The type name as a null-terminated C string (for R tag display)
Source§const TYPE_ID_CSTR: &'static [u8] = b"miniextendr_api::altrep::IterListData\0"
const TYPE_ID_CSTR: &'static [u8] = b"miniextendr_api::altrep::IterListData\0"
Namespaced type ID as a null-terminated C string (for type checking). Read more
Auto Trait Implementations§
impl<I> !Freeze for IterListData<I>
impl<I> !RefUnwindSafe for IterListData<I>
impl<I> Send for IterListData<I>where
I: Send,
impl<I> !Sync for IterListData<I>
impl<I> Unpin for IterListData<I>where
I: Unpin,
impl<I> UnsafeUnpin for IterListData<I>where
I: UnsafeUnpin,
impl<I> UnwindSafe for IterListData<I>where
I: UnwindSafe,
Blanket Implementations§
Source§impl<T> AltrepExtract for Twhere
T: TypedExternal,
impl<T> AltrepExtract for Twhere
T: TypedExternal,
Source§unsafe fn altrep_extract_ref(x: SEXP) -> &'static T
unsafe fn altrep_extract_ref(x: SEXP) -> &'static T
Extract a shared reference from the ALTREP data1 slot. Read more
Source§unsafe fn altrep_extract_mut(x: SEXP) -> &'static mut T
unsafe fn altrep_extract_mut(x: SEXP) -> &'static mut T
Extract a mutable reference from the ALTREP data1 slot. Read more
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
Mutably borrows from an owned value. Read more