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.
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.
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.