Trait ProcSend

Source
pub unsafe trait ProcSend: Send { }
Expand description

Types which can be transferred across process boundary.

An example of non-ProcSend type would be any type that contains pointers to values in a process’ address space. Instead a ProcSend type would use indices which the processes would know how to convert into their own address space.

In general, for any type to implement ProcSend, it must be Send, as threads conceptually are the same as processes which share the same address space.

Unlike Send, ProcSend is not an auto-trait by default, because auto-traits are not stable. Unless the auto_traits feature is enabled, it will be necessary to implement this trait manually.

Finally, currently ProcSend is only implemented for the built-in types which have specified type layout and are ffi-safe. This is a conservative default as there is no guarantee that the two interacting processes will be compiled with a same version of Rust or are Rust at all.

Implementations on Foreign Types§

Source§

impl ProcSend for c_void

Source§

impl ProcSend for bool

Source§

impl ProcSend for char

Source§

impl ProcSend for f32

Source§

impl ProcSend for f64

Source§

impl ProcSend for i8

Source§

impl ProcSend for i16

Source§

impl ProcSend for i32

Source§

impl ProcSend for i64

Source§

impl ProcSend for i128

Source§

impl ProcSend for isize

Source§

impl ProcSend for str

Source§

impl ProcSend for u8

Source§

impl ProcSend for u16

Source§

impl ProcSend for u32

Source§

impl ProcSend for u64

Source§

impl ProcSend for u128

Source§

impl ProcSend for usize

Source§

impl ProcSend for AtomicBool

Source§

impl ProcSend for AtomicI8

Source§

impl ProcSend for AtomicI16

Source§

impl ProcSend for AtomicI32

Source§

impl ProcSend for AtomicI64

Source§

impl ProcSend for AtomicIsize

Source§

impl ProcSend for AtomicU8

Source§

impl ProcSend for AtomicU16

Source§

impl ProcSend for AtomicU32

Source§

impl ProcSend for AtomicU64

Source§

impl ProcSend for AtomicUsize

Source§

impl ProcSend for NonZeroI8

Source§

impl ProcSend for NonZeroI16

Source§

impl ProcSend for NonZeroI32

Source§

impl ProcSend for NonZeroI64

Source§

impl ProcSend for NonZeroI128

Source§

impl ProcSend for NonZeroIsize

Source§

impl ProcSend for NonZeroU8

Source§

impl ProcSend for NonZeroU16

Source§

impl ProcSend for NonZeroU32

Source§

impl ProcSend for NonZeroU64

Source§

impl ProcSend for NonZeroU128

Source§

impl ProcSend for NonZeroUsize

Source§

impl<T1: ProcSend, T2: ProcSend, T3: ProcSend, T4: ProcSend, T5: ProcSend, T6: ProcSend, T7: ProcSend, T8: ProcSend, T9: ProcSend, T10: ProcSend, T11: ProcSend, T12: ProcSend> ProcSend for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)

Source§

impl<T2: ProcSend, T3: ProcSend, T4: ProcSend, T5: ProcSend, T6: ProcSend, T7: ProcSend, T8: ProcSend, T9: ProcSend, T10: ProcSend, T11: ProcSend, T12: ProcSend> ProcSend for (T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)

Source§

impl<T3: ProcSend, T4: ProcSend, T5: ProcSend, T6: ProcSend, T7: ProcSend, T8: ProcSend, T9: ProcSend, T10: ProcSend, T11: ProcSend, T12: ProcSend> ProcSend for (T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)

Source§

impl<T4: ProcSend, T5: ProcSend, T6: ProcSend, T7: ProcSend, T8: ProcSend, T9: ProcSend, T10: ProcSend, T11: ProcSend, T12: ProcSend> ProcSend for (T4, T5, T6, T7, T8, T9, T10, T11, T12)

Source§

impl<T5: ProcSend, T6: ProcSend, T7: ProcSend, T8: ProcSend, T9: ProcSend, T10: ProcSend, T11: ProcSend, T12: ProcSend> ProcSend for (T5, T6, T7, T8, T9, T10, T11, T12)

Source§

impl<T6: ProcSend, T7: ProcSend, T8: ProcSend, T9: ProcSend, T10: ProcSend, T11: ProcSend, T12: ProcSend> ProcSend for (T6, T7, T8, T9, T10, T11, T12)

Source§

impl<T7: ProcSend, T8: ProcSend, T9: ProcSend, T10: ProcSend, T11: ProcSend, T12: ProcSend> ProcSend for (T7, T8, T9, T10, T11, T12)

Source§

impl<T8: ProcSend, T9: ProcSend, T10: ProcSend, T11: ProcSend, T12: ProcSend> ProcSend for (T8, T9, T10, T11, T12)

Source§

impl<T9: ProcSend, T10: ProcSend, T11: ProcSend, T12: ProcSend> ProcSend for (T9, T10, T11, T12)

Source§

impl<T10: ProcSend, T11: ProcSend, T12: ProcSend> ProcSend for (T10, T11, T12)

Source§

impl<T11: ProcSend, T12: ProcSend> ProcSend for (T11, T12)

Source§

impl<T12: ProcSend> ProcSend for (T12,)

Source§

impl<T: ProcSend> ProcSend for Cell<T>

Source§

impl<T: ProcSend> ProcSend for RefCell<T>

Source§

impl<T: ProcSend> ProcSend for UnsafeCell<T>

Source§

impl<T: ProcSend> ProcSend for ManuallyDrop<T>

Implementors§