[][src]Crate procspawn

This crate provides the ability to spawn processes with a function similar to thread::spawn.

Unlike thread::spawn data cannot be passed in closures but must be explicitly passed as single argument which must be serde serializable. The return value from the spawned closure also must be serializable and can then be unwrapped from the returned join handle.

procspawn::init();

let data = vec![1, 2, 3, 4];
let handle = procspawn::spawn(data, |data| {
    println!("Received data {:?}", &data);
    data.into_iter().sum::<i64>()
});
let result = handle.join().unwrap();

Because procspawn will invoke a subprocess and there is currently no reliable way to intercept main in Rust it's necessary for you to call procspawn::init at an early time in the program. The place where this will be called is the entrypoint for the subprocesses spawned.

spawn can pass arbitrary serializable data, including IPC senders and receivers from the ipc-channel crate, down to the new process.

Differences to Mitosis

This crate is a fork of the mitosis crate with various differences in how they operate. The most obvious one is that procspawn is very opinionated about error handling and will automatically capture and send backtraces across the process boundaries. Additionally procspawn provides a process pool.

Feature Flags

The following feature flags exist:

  • backtrace: this feature is enabled by default. When in use then backtraces are captured with the backtrace-rs crate and serialized across process boundaries.
  • test-support: when this feature is enabled procspawn can be used with rusttest. See enable_test_support! for more information.

Platform Support

Currently this crate only supports macOS and Linux because ipc-channel itself does not support Windows yet.

Macros

enable_test_support

Supports the use of procspawn in tests.

Structs

Builder

Process factory, which can be used in order to configure the properties of a process being created.

JoinHandle

An owned permission to join on a process (block on its termination).

Location

Location of a panic.

PanicInfo

Represents a panic caugh across processes.

Pool

A process pool.

PoolBuilder

Utility to configure a pool.

ProcConfig

Can be used to configure the process.

SpawnError

Encapsulates errors of the procspawn crate.

Functions

init

Initializes procspawn.

spawn

Spawn a new process to run a function with some payload.