enum SliceBorrow {
Mut,
Shared,
}Expand description
How a #[miniextendr] parameter type borrows R’s data pointer, if it does.
&[T] / &mut [T] (and their Option<_> wrappers) are the TryFromSexp
impls in miniextendr-api/src/from_r.rs that return a view over R’s
DATAPTR without copying (r_slice / r_slice_mut). Two such parameters
bound to the same SEXP alias one buffer; that is undefined behavior whenever
at least one of the two borrows is mutable (#1104).
Variants§
Mut
&mut [T] / Option<&mut [T]> — exclusive borrow via r_slice_mut.
&[T] / Option<&[T]> — shared borrow via r_slice.
Trait Implementations§
Source§impl Clone for SliceBorrow
impl Clone for SliceBorrow
Source§fn clone(&self) -> SliceBorrow
fn clone(&self) -> SliceBorrow
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for SliceBorrow
Source§impl Debug for SliceBorrow
impl Debug for SliceBorrow
Source§impl Eq for SliceBorrow
impl Eq for SliceBorrow
Source§#[doc(hidden)]fn assert_fields_are_eq(&self)
#[doc(hidden)]fn assert_fields_are_eq(&self)
derive_eq_internals)1.0.0 (const: unstable) · Source§#[doc(hidden)]fn assert_receiver_is_total_eq(&self)
#[doc(hidden)]fn assert_receiver_is_total_eq(&self)
implementation detail of #[derive(Eq)]
Source§impl PartialEq for SliceBorrow
impl PartialEq for SliceBorrow
impl StructuralPartialEq for SliceBorrow
impl TrivialClone for SliceBorrow
Auto Trait Implementations§
impl Freeze for SliceBorrow
impl RefUnwindSafe for SliceBorrow
impl Send for SliceBorrow
impl Sync for SliceBorrow
impl Unpin for SliceBorrow
impl UnsafeUnpin for SliceBorrow
impl UnwindSafe for SliceBorrow
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> Printable for T
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: 1 byte
Size for each variant:
Mut: 0 bytesShared: 0 bytes