pub struct AltrepBuffer<T: RNativeType> {
values: Vec<T>,
exposed: bool,
retired: Vec<Vec<T>>,
}Expand description
A growable native buffer whose exposed allocations survive later edits.
Wrap in Altrep to return it to R. Built-in classes use value semantics:
R duplication clones the current values, so a copy R makes keeps its own
values. An edit through the owner of an R object changes that object in
place, for every binding R has of it.
edit detaches first if R has requested a data pointer, and
keeps the old allocation until this owner is dropped. Previously returned
pointers then refer to the prior values; subsequent callbacks see the new
values. R provides no pointer-release notification, so repeated exposure
followed by editing retains one buffer per such edit. No buffer is copied
when it has only been read through Elt or Get_region.
This type deliberately has no DerefMut or method returning &mut Vec<T>:
growth must pass through the edit boundary.
Fields§
§values: Vec<T>§exposed: bool§retired: Vec<Vec<T>>Implementations§
Source§impl<T: RNativeType> AltrepBuffer<T>
impl<T: RNativeType> AltrepBuffer<T>
Sourcepub fn as_slice(&self) -> &[T]
pub fn as_slice(&self) -> &[T]
Read the current values. The borrow prevents concurrent Rust edits.
Sourcepub fn edit<R>(&mut self, edit: impl FnOnce(&mut Vec<T>) -> R) -> R
pub fn edit<R>(&mut self, edit: impl FnOnce(&mut Vec<T>) -> R) -> R
Edit the Vec, retaining its old allocation if a pointer was exposed.
A panic in edit leaves earlier pointers valid and keeps any changes
already made to the new Vec; it does not roll the edit back.
Trait Implementations§
Source§impl AltComplex for AltrepBuffer<Rcomplex>
impl AltComplex for AltrepBuffer<Rcomplex>
Source§const HAS_GET_REGION: bool = true
const HAS_GET_REGION: bool = true
true to register get_region.Source§impl AltComplexData for AltrepBuffer<Rcomplex>
impl AltComplexData for AltrepBuffer<Rcomplex>
Source§impl AltInteger for AltrepBuffer<i32>
impl AltInteger for AltrepBuffer<i32>
Source§const HAS_GET_REGION: bool = true
const HAS_GET_REGION: bool = true
true to register get_region.Source§const HAS_IS_SORTED: bool = true
const HAS_IS_SORTED: bool = true
true to register is_sorted.Source§impl AltIntegerData for AltrepBuffer<i32>
impl AltIntegerData for AltrepBuffer<i32>
Source§fn as_slice(&self) -> Option<&[i32]>
fn as_slice(&self) -> Option<&[i32]>
Source§fn get_region(&self, start: usize, len: usize, buf: &mut [i32]) -> usize
fn get_region(&self, start: usize, len: usize, buf: &mut [i32]) -> usize
Source§fn is_sorted(&self) -> Option<Sortedness>
fn is_sorted(&self) -> Option<Sortedness>
Source§fn sum(&self, _na_rm: bool) -> Option<i64>
fn sum(&self, _na_rm: bool) -> Option<i64>
Source§impl AltLogical for AltrepBuffer<RLogical>
impl AltLogical for AltrepBuffer<RLogical>
Source§const HAS_GET_REGION: bool = true
const HAS_GET_REGION: bool = true
true to register get_region.Source§const HAS_IS_SORTED: bool = true
const HAS_IS_SORTED: bool = true
true to register is_sorted.Source§impl AltLogicalData for AltrepBuffer<RLogical>
impl AltLogicalData for AltrepBuffer<RLogical>
Source§fn as_r_slice(&self) -> Option<&[i32]>
fn as_r_slice(&self) -> Option<&[i32]>
Source§fn get_region(&self, start: usize, len: usize, buf: &mut [i32]) -> usize
fn get_region(&self, start: usize, len: usize, buf: &mut [i32]) -> usize
Source§fn is_sorted(&self) -> Option<Sortedness>
fn is_sorted(&self) -> Option<Sortedness>
Source§impl AltRaw for AltrepBuffer<u8>
impl AltRaw for AltrepBuffer<u8>
Source§const HAS_GET_REGION: bool = true
const HAS_GET_REGION: bool = true
true to register get_region.Source§impl AltRawData for AltrepBuffer<u8>
impl AltRawData for AltrepBuffer<u8>
Source§impl AltReal for AltrepBuffer<f64>
impl AltReal for AltrepBuffer<f64>
Source§const HAS_GET_REGION: bool = true
const HAS_GET_REGION: bool = true
true to register get_region.Source§const HAS_IS_SORTED: bool = true
const HAS_IS_SORTED: bool = true
true to register is_sorted.Source§impl AltRealData for AltrepBuffer<f64>
impl AltRealData for AltrepBuffer<f64>
Source§fn as_slice(&self) -> Option<&[f64]>
fn as_slice(&self) -> Option<&[f64]>
Source§fn get_region(&self, start: usize, len: usize, buf: &mut [f64]) -> usize
fn get_region(&self, start: usize, len: usize, buf: &mut [f64]) -> usize
Source§fn is_sorted(&self) -> Option<Sortedness>
fn is_sorted(&self) -> Option<Sortedness>
Source§impl AltVec for AltrepBuffer<i32>
impl AltVec for AltrepBuffer<i32>
Source§const HAS_DATAPTR: bool = true
const HAS_DATAPTR: bool = true
true to register dataptr.Source§const HAS_DATAPTR_OR_NULL: bool = true
const HAS_DATAPTR_OR_NULL: bool = true
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
Source§const HAS_EXTRACT_SUBSET: bool = false
const HAS_EXTRACT_SUBSET: bool = false
true to register extract_subset.Source§impl AltVec for AltrepBuffer<f64>
impl AltVec for AltrepBuffer<f64>
Source§const HAS_DATAPTR: bool = true
const HAS_DATAPTR: bool = true
true to register dataptr.Source§const HAS_DATAPTR_OR_NULL: bool = true
const HAS_DATAPTR_OR_NULL: bool = true
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
Source§const HAS_EXTRACT_SUBSET: bool = false
const HAS_EXTRACT_SUBSET: bool = false
true to register extract_subset.Source§impl AltVec for AltrepBuffer<u8>
impl AltVec for AltrepBuffer<u8>
Source§const HAS_DATAPTR: bool = true
const HAS_DATAPTR: bool = true
true to register dataptr.Source§const HAS_DATAPTR_OR_NULL: bool = true
const HAS_DATAPTR_OR_NULL: bool = true
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
Source§const HAS_EXTRACT_SUBSET: bool = false
const HAS_EXTRACT_SUBSET: bool = false
true to register extract_subset.Source§impl AltVec for AltrepBuffer<Rcomplex>
impl AltVec for AltrepBuffer<Rcomplex>
Source§const HAS_DATAPTR: bool = true
const HAS_DATAPTR: bool = true
true to register dataptr.Source§const HAS_DATAPTR_OR_NULL: bool = true
const HAS_DATAPTR_OR_NULL: bool = true
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
Source§const HAS_EXTRACT_SUBSET: bool = false
const HAS_EXTRACT_SUBSET: bool = false
true to register extract_subset.Source§impl AltVec for AltrepBuffer<RLogical>
impl AltVec for AltrepBuffer<RLogical>
Source§const HAS_DATAPTR: bool = true
const HAS_DATAPTR: bool = true
true to register dataptr.Source§const HAS_DATAPTR_OR_NULL: bool = true
const HAS_DATAPTR_OR_NULL: bool = true
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
Source§const HAS_EXTRACT_SUBSET: bool = false
const HAS_EXTRACT_SUBSET: bool = false
true to register extract_subset.Source§impl Altrep for AltrepBuffer<i32>
impl Altrep for AltrepBuffer<i32>
Source§const GUARD: AltrepGuard = crate::altrep_traits::AltrepGuard::RUnwind
const GUARD: AltrepGuard = crate::altrep_traits::AltrepGuard::RUnwind
Source§const HAS_DUPLICATE: bool = true
const HAS_DUPLICATE: bool = true
true to register duplicate.Source§const HAS_SERIALIZED_STATE: bool = true
const HAS_SERIALIZED_STATE: bool = true
true to register serialized_state.Source§const HAS_UNSERIALIZE: bool = true
const HAS_UNSERIALIZE: bool = true
true to register unserialize.Source§fn length(x: SEXP) -> R_xlen_t
fn length(x: SEXP) -> R_xlen_t
Source§fn serialized_state(x: SEXP) -> SEXP
fn serialized_state(x: SEXP) -> SEXP
Source§const HAS_UNSERIALIZE_EX: bool = false
const HAS_UNSERIALIZE_EX: bool = false
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
Source§const HAS_DUPLICATE_EX: bool = false
const HAS_DUPLICATE_EX: bool = false
true to register duplicate_ex.Source§const HAS_COERCE: bool = false
const HAS_COERCE: bool = false
true to register coerce.Source§const HAS_INSPECT: bool = false
const HAS_INSPECT: bool = false
true to register inspect.Source§impl Altrep for AltrepBuffer<f64>
impl Altrep for AltrepBuffer<f64>
Source§const GUARD: AltrepGuard = crate::altrep_traits::AltrepGuard::RUnwind
const GUARD: AltrepGuard = crate::altrep_traits::AltrepGuard::RUnwind
Source§const HAS_DUPLICATE: bool = true
const HAS_DUPLICATE: bool = true
true to register duplicate.Source§const HAS_SERIALIZED_STATE: bool = true
const HAS_SERIALIZED_STATE: bool = true
true to register serialized_state.Source§const HAS_UNSERIALIZE: bool = true
const HAS_UNSERIALIZE: bool = true
true to register unserialize.Source§fn length(x: SEXP) -> R_xlen_t
fn length(x: SEXP) -> R_xlen_t
Source§fn serialized_state(x: SEXP) -> SEXP
fn serialized_state(x: SEXP) -> SEXP
Source§const HAS_UNSERIALIZE_EX: bool = false
const HAS_UNSERIALIZE_EX: bool = false
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
Source§const HAS_DUPLICATE_EX: bool = false
const HAS_DUPLICATE_EX: bool = false
true to register duplicate_ex.Source§const HAS_COERCE: bool = false
const HAS_COERCE: bool = false
true to register coerce.Source§const HAS_INSPECT: bool = false
const HAS_INSPECT: bool = false
true to register inspect.Source§impl Altrep for AltrepBuffer<u8>
impl Altrep for AltrepBuffer<u8>
Source§const GUARD: AltrepGuard = crate::altrep_traits::AltrepGuard::RUnwind
const GUARD: AltrepGuard = crate::altrep_traits::AltrepGuard::RUnwind
Source§const HAS_DUPLICATE: bool = true
const HAS_DUPLICATE: bool = true
true to register duplicate.Source§const HAS_SERIALIZED_STATE: bool = true
const HAS_SERIALIZED_STATE: bool = true
true to register serialized_state.Source§const HAS_UNSERIALIZE: bool = true
const HAS_UNSERIALIZE: bool = true
true to register unserialize.Source§fn length(x: SEXP) -> R_xlen_t
fn length(x: SEXP) -> R_xlen_t
Source§fn serialized_state(x: SEXP) -> SEXP
fn serialized_state(x: SEXP) -> SEXP
Source§const HAS_UNSERIALIZE_EX: bool = false
const HAS_UNSERIALIZE_EX: bool = false
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
Source§const HAS_DUPLICATE_EX: bool = false
const HAS_DUPLICATE_EX: bool = false
true to register duplicate_ex.Source§const HAS_COERCE: bool = false
const HAS_COERCE: bool = false
true to register coerce.Source§const HAS_INSPECT: bool = false
const HAS_INSPECT: bool = false
true to register inspect.Source§impl Altrep for AltrepBuffer<Rcomplex>
impl Altrep for AltrepBuffer<Rcomplex>
Source§const GUARD: AltrepGuard = crate::altrep_traits::AltrepGuard::RUnwind
const GUARD: AltrepGuard = crate::altrep_traits::AltrepGuard::RUnwind
Source§const HAS_DUPLICATE: bool = true
const HAS_DUPLICATE: bool = true
true to register duplicate.Source§const HAS_SERIALIZED_STATE: bool = true
const HAS_SERIALIZED_STATE: bool = true
true to register serialized_state.Source§const HAS_UNSERIALIZE: bool = true
const HAS_UNSERIALIZE: bool = true
true to register unserialize.Source§fn length(x: SEXP) -> R_xlen_t
fn length(x: SEXP) -> R_xlen_t
Source§fn serialized_state(x: SEXP) -> SEXP
fn serialized_state(x: SEXP) -> SEXP
Source§const HAS_UNSERIALIZE_EX: bool = false
const HAS_UNSERIALIZE_EX: bool = false
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
Source§const HAS_DUPLICATE_EX: bool = false
const HAS_DUPLICATE_EX: bool = false
true to register duplicate_ex.Source§const HAS_COERCE: bool = false
const HAS_COERCE: bool = false
true to register coerce.Source§const HAS_INSPECT: bool = false
const HAS_INSPECT: bool = false
true to register inspect.Source§impl Altrep for AltrepBuffer<RLogical>
impl Altrep for AltrepBuffer<RLogical>
Source§const GUARD: AltrepGuard = crate::altrep_traits::AltrepGuard::RUnwind
const GUARD: AltrepGuard = crate::altrep_traits::AltrepGuard::RUnwind
Source§const HAS_DUPLICATE: bool = true
const HAS_DUPLICATE: bool = true
true to register duplicate.Source§const HAS_SERIALIZED_STATE: bool = true
const HAS_SERIALIZED_STATE: bool = true
true to register serialized_state.Source§const HAS_UNSERIALIZE: bool = true
const HAS_UNSERIALIZE: bool = true
true to register unserialize.Source§fn length(x: SEXP) -> R_xlen_t
fn length(x: SEXP) -> R_xlen_t
Source§fn serialized_state(x: SEXP) -> SEXP
fn serialized_state(x: SEXP) -> SEXP
Source§const HAS_UNSERIALIZE_EX: bool = false
const HAS_UNSERIALIZE_EX: bool = false
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
Source§const HAS_DUPLICATE_EX: bool = false
const HAS_DUPLICATE_EX: bool = false
true to register duplicate_ex.Source§const HAS_COERCE: bool = false
const HAS_COERCE: bool = false
true to register coerce.Source§const HAS_INSPECT: bool = false
const HAS_INSPECT: bool = false
true to register inspect.Source§impl AltrepDataptr<Rcomplex> for AltrepBuffer<Rcomplex>
impl AltrepDataptr<Rcomplex> for AltrepBuffer<Rcomplex>
Source§impl AltrepDataptr<f64> for AltrepBuffer<f64>
impl AltrepDataptr<f64> for AltrepBuffer<f64>
Source§impl AltrepDataptr<i32> for AltrepBuffer<i32>
impl AltrepDataptr<i32> for AltrepBuffer<i32>
Source§impl AltrepDataptr<i32> for AltrepBuffer<RLogical>
impl AltrepDataptr<i32> for AltrepBuffer<RLogical>
Source§impl AltrepDataptr<u8> for AltrepBuffer<u8>
impl AltrepDataptr<u8> for AltrepBuffer<u8>
Source§impl<T: RNativeType> AltrepLen for AltrepBuffer<T>
impl<T: RNativeType> AltrepLen for AltrepBuffer<T>
Source§fn altrep_len(&self) -> usize
fn altrep_len(&self) -> usize
Source§fn altrep_is_empty(&self) -> bool
fn altrep_is_empty(&self) -> bool
Source§impl<T: RNativeType> AltrepSerialize for AltrepBuffer<T>
impl<T: RNativeType> AltrepSerialize for AltrepBuffer<T>
Source§fn serialized_state(&self) -> SEXP
fn serialized_state(&self) -> SEXP
Source§impl<T: RNativeType> AsRef<[T]> for AltrepBuffer<T>
impl<T: RNativeType> AsRef<[T]> for AltrepBuffer<T>
Source§impl<T: RNativeType> Clone for AltrepBuffer<T>
impl<T: RNativeType> Clone for AltrepBuffer<T>
Source§impl<T: Debug + RNativeType> Debug for AltrepBuffer<T>
impl<T: Debug + RNativeType> Debug for AltrepBuffer<T>
Source§impl<T: RNativeType> From<Vec<T>> for AltrepBuffer<T>
impl<T: RNativeType> From<Vec<T>> for AltrepBuffer<T>
Source§impl InferBase for AltrepBuffer<i32>
impl InferBase for AltrepBuffer<i32>
Source§unsafe fn make_class(
class_name: *const c_char,
pkg_name: *const c_char,
) -> R_altrep_class_t
unsafe fn make_class( class_name: *const c_char, pkg_name: *const c_char, ) -> R_altrep_class_t
Source§unsafe fn install_methods(cls: R_altrep_class_t)
unsafe fn install_methods(cls: R_altrep_class_t)
Source§impl InferBase for AltrepBuffer<f64>
impl InferBase for AltrepBuffer<f64>
Source§unsafe fn make_class(
class_name: *const c_char,
pkg_name: *const c_char,
) -> R_altrep_class_t
unsafe fn make_class( class_name: *const c_char, pkg_name: *const c_char, ) -> R_altrep_class_t
Source§unsafe fn install_methods(cls: R_altrep_class_t)
unsafe fn install_methods(cls: R_altrep_class_t)
Source§impl InferBase for AltrepBuffer<u8>
impl InferBase for AltrepBuffer<u8>
Source§unsafe fn make_class(
class_name: *const c_char,
pkg_name: *const c_char,
) -> R_altrep_class_t
unsafe fn make_class( class_name: *const c_char, pkg_name: *const c_char, ) -> R_altrep_class_t
Source§unsafe fn install_methods(cls: R_altrep_class_t)
unsafe fn install_methods(cls: R_altrep_class_t)
Source§impl InferBase for AltrepBuffer<Rcomplex>
impl InferBase for AltrepBuffer<Rcomplex>
Source§unsafe fn make_class(
class_name: *const c_char,
pkg_name: *const c_char,
) -> R_altrep_class_t
unsafe fn make_class( class_name: *const c_char, pkg_name: *const c_char, ) -> R_altrep_class_t
Source§unsafe fn install_methods(cls: R_altrep_class_t)
unsafe fn install_methods(cls: R_altrep_class_t)
Source§impl InferBase for AltrepBuffer<RLogical>
impl InferBase for AltrepBuffer<RLogical>
Source§unsafe fn make_class(
class_name: *const c_char,
pkg_name: *const c_char,
) -> R_altrep_class_t
unsafe fn make_class( class_name: *const c_char, pkg_name: *const c_char, ) -> R_altrep_class_t
Source§unsafe fn install_methods(cls: R_altrep_class_t)
unsafe fn install_methods(cls: R_altrep_class_t)
Source§impl RegisterAltrep for AltrepBuffer<i32>
impl RegisterAltrep for AltrepBuffer<i32>
Source§fn get_or_init_class() -> R_altrep_class_t
fn get_or_init_class() -> R_altrep_class_t
Source§impl RegisterAltrep for AltrepBuffer<f64>
impl RegisterAltrep for AltrepBuffer<f64>
Source§fn get_or_init_class() -> R_altrep_class_t
fn get_or_init_class() -> R_altrep_class_t
Source§impl RegisterAltrep for AltrepBuffer<u8>
impl RegisterAltrep for AltrepBuffer<u8>
Source§fn get_or_init_class() -> R_altrep_class_t
fn get_or_init_class() -> R_altrep_class_t
Source§impl RegisterAltrep for AltrepBuffer<Rcomplex>
impl RegisterAltrep for AltrepBuffer<Rcomplex>
Source§fn get_or_init_class() -> R_altrep_class_t
fn get_or_init_class() -> R_altrep_class_t
Source§impl RegisterAltrep for AltrepBuffer<RLogical>
impl RegisterAltrep for AltrepBuffer<RLogical>
Source§fn get_or_init_class() -> R_altrep_class_t
fn get_or_init_class() -> R_altrep_class_t
Source§impl<T: RNativeType> TypedExternal for AltrepBuffer<T>
impl<T: RNativeType> TypedExternal for AltrepBuffer<T>
Source§const TYPE_NAME: &'static str = "AltrepBuffer"
const TYPE_NAME: &'static str = "AltrepBuffer"
Source§const TYPE_NAME_CSTR: &'static [u8] = b"AltrepBuffer\0"
const TYPE_NAME_CSTR: &'static [u8] = b"AltrepBuffer\0"
Source§const TYPE_ID_CSTR: &'static [u8] = b"miniextendr::AltrepBuffer\0"
const TYPE_ID_CSTR: &'static [u8] = b"miniextendr::AltrepBuffer\0"
Source§const R_SLOT_COUNT: usize = 0
const R_SLOT_COUNT: usize = 0
Sidecar<T> fields: values the external pointer’s
protection list keeps after the type ID and the user slot. Read moreSource§#[doc(hidden)]const SIDECAR_NAMES: &'static [&'static str] = _
#[doc(hidden)]const SIDECAR_NAMES: &'static [&'static str] = _
Sidecar fields (#[r_data(name = "..")], else
the Rust field name), in slot order: the names the protection list
carries, so a save is read back by field name (#2187, #2215).Source§const RESTORED_ERROR_CLASS: &'static [&'static str] = _
const RESTORED_ERROR_CLASS: &'static [&'static str] = _
miniextendr_restored* classes
(RESTORED_NO_VALUE_CLASS / RESTORED_OTHER_VERSION_CLASS, then
RESTORED_CLASS), which every restored refusal keeps. Read moreSource§const RESTORED_ERROR_MESSAGE: Option<&'static str> = None
const RESTORED_ERROR_MESSAGE: Option<&'static str> = None
saved_version /
current_version fields stay), and for a list or environment of the
class that carries no pointer (a save in an older format). A static
string: one type is one R class, so the package names it literally. Read moreSource§const FIELD_ERROR_CLASS: &'static [&'static str] = _
const FIELD_ERROR_CLASS: &'static [&'static str] = _
subscriptOutOfBoundsError), a name that is not a
field (miniextendr_no_field), a computed field assigned to
(miniextendr_read_only_field), a pointer of another type, and a
receiver that carries no pointer (NO_HANDLE_CLASS). The R
accessors of the type read it for the last two; the derive writes the
same classes into the R helpers for the others. Read moreSource§const FIELD_ERROR_MESSAGE: Option<&'static str> = None
const FIELD_ERROR_MESSAGE: Option<&'static str> = None
T or that carries no pointer (#1920),
replacing miniextendr’s, which names the receiver’s R class. Read moreSource§#[doc(hidden)]fn __mx_visit_sidecars(
&self,
_visit: &mut dyn FnMut(usize, &'static str, &dyn SidecarField),
)
#[doc(hidden)]fn __mx_visit_sidecars(
&self,
_visit: &mut dyn FnMut(usize, &'static str, &dyn SidecarField),
)
Sidecar<T> field of self with its slot index and
name, so the handle can flush the field’s pending value into its slot
or load the slot back into the field. Read moreSource§#[doc(hidden)]const REBUILDS: bool = false
#[doc(hidden)]const REBUILDS: bool = false
readRDS(), by Self::__mx_rebuild,
instead of refused. Read moreSource§#[doc(hidden)]const REBUILDS_ANY_VERSION: bool = false
#[doc(hidden)]const REBUILDS_ANY_VERSION: bool = false
Self::__mx_rebuild also rebuilds a pointer another
version of the crate saved, when the save carries slot names.
#[derive(ExternalPtr)] sets it with any_version next to
rebuild = path (#2187).Source§#[doc(hidden)]fn __mx_rebuild(saved: &Saved<'_, Self>) -> Result<Self, RCondition>where
Self: Sized,
#[doc(hidden)]fn __mx_rebuild(saved: &Saved<'_, Self>) -> Result<Self, RCondition>where
Self: Sized,
#[derive(ExternalPtr)] emits it for
#[externalptr(rebuild = path)]: it calls path and turns its Err
into a condition.Auto Trait Implementations§
impl<T> Freeze for AltrepBuffer<T>
impl<T> RefUnwindSafe for AltrepBuffer<T>
impl<T> Send for AltrepBuffer<T>
impl<T> Sync for AltrepBuffer<T>
impl<T> Unpin for AltrepBuffer<T>
impl<T> UnsafeUnpin for AltrepBuffer<T>
impl<T> UnwindSafe for AltrepBuffer<T>
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
Source§unsafe fn altrep_extract_mut(x: SEXP) -> &'static mut T
unsafe fn altrep_extract_mut(x: SEXP) -> &'static mut T
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<T> IntoRAltrep for Twhere
T: RegisterAltrep + TypedExternal,
impl<T> IntoRAltrep for Twhere
T: RegisterAltrep + TypedExternal,
Source§fn into_sexp_altrep(self) -> SEXP
fn into_sexp_altrep(self) -> SEXP
Source§unsafe fn into_sexp_altrep_unchecked(self) -> SEXP
unsafe fn into_sexp_altrep_unchecked(self) -> SEXP
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: 56 bytes