pub enum ThreadStrategy {
MainThread,
WorkerThread,
}Expand description
Thread execution strategy for C wrappers.
Variants§
MainThread
Execute on main R thread with with_r_unwind_protect. Default.
All code runs on R’s main thread. Errors are returned as tagged SEXP values
(via make_rust_condition_value) and the R wrapper raises structured
condition objects. Simpler execution model with better R integration.
Also required when:
- Function takes SEXP inputs (not Send)
- Function returns raw SEXP
- Instance method (self_ptr isn’t Send)
- Function uses variadic dots (Dots type isn’t Send)
#[miniextendr(check_interrupt)]used
WorkerThread
Execute on worker thread with panic catching. Opt-in via #[miniextendr(worker)].
Structure:
- Argument conversion on main thread
- Function execution on worker thread via
run_on_worker - SEXP conversion on main thread with
with_r_unwind_protect
Trait Implementations§
Source§impl Clone for ThreadStrategy
impl Clone for ThreadStrategy
Source§fn clone(&self) -> ThreadStrategy
fn clone(&self) -> ThreadStrategy
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for ThreadStrategy
impl Debug for ThreadStrategy
Source§impl Eq for ThreadStrategy
impl Eq for ThreadStrategy
Source§#[doc(hidden)]fn assert_fields_are_eq(&self)
#[doc(hidden)]fn assert_fields_are_eq(&self)
🔬This is a nightly-only experimental API. (
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)
👎Deprecated since 1.95.0:
implementation detail of #[derive(Eq)]
Source§impl PartialEq for ThreadStrategy
impl PartialEq for ThreadStrategy
Source§fn eq(&self, other: &ThreadStrategy) -> bool
fn eq(&self, other: &ThreadStrategy) -> bool
Tests for
self and other values to be equal, and is used by ==.impl Copy for ThreadStrategy
impl StructuralPartialEq for ThreadStrategy
impl TrivialClone for ThreadStrategy
Auto Trait Implementations§
impl Freeze for ThreadStrategy
impl RefUnwindSafe for ThreadStrategy
impl Send for ThreadStrategy
impl Sync for ThreadStrategy
impl Unpin for ThreadStrategy
impl UnsafeUnpin for ThreadStrategy
impl UnwindSafe for ThreadStrategy
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> SizedTypeProperties for T
impl<T> SizedTypeProperties for T
Source§#[doc(hidden)]const SIZE: usize = _
#[doc(hidden)]const SIZE: usize = _
🔬This is a nightly-only experimental API. (
sized_type_properties)Source§#[doc(hidden)]const ALIGN: usize = _
#[doc(hidden)]const ALIGN: usize = _
🔬This is a nightly-only experimental API. (
sized_type_properties)Source§#[doc(hidden)]const ALIGNMENT: Alignment = _
#[doc(hidden)]const ALIGNMENT: Alignment = _
🔬This is a nightly-only experimental API. (
ptr_alignment_type)Source§#[doc(hidden)]const IS_ZST: bool = _
#[doc(hidden)]const IS_ZST: bool = _
🔬This is a nightly-only experimental API. (
sized_type_properties)Source§#[doc(hidden)]const LAYOUT: Layout = _
#[doc(hidden)]const LAYOUT: Layout = _
🔬This is a nightly-only experimental API. (
sized_type_properties)Source§#[doc(hidden)]const MAX_SLICE_LEN: usize = _
#[doc(hidden)]const MAX_SLICE_LEN: usize = _
🔬This is a nightly-only experimental API. (
sized_type_properties)The largest safe length for a
[Self]. Read moreimpl<T> Printable for T
Layout§
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:
MainThread: 0 bytesWorkerThread: 0 bytes