procspawn 1.0.2

thread::spawn just with processes
Documentation
# procspawn

[![Crates.io](https://img.shields.io/crates/d/procspawn.svg)](https://crates.io/crates/procspawn)
[![Documentation](https://docs.rs/procspawn/badge.svg)](https://docs.rs/procspawn)

This crate provides the ability to spawn processes with a function similar
to `thread::spawn`.  Instead of closures it passes [`serde`](https://serde.rs/)
serializable objects.  The return value from the spawned closure also must be
serializable and can then be retrieved from the returned join handle.

If the spawned function causes a panic it will also be serialized across
the process boundaries.

## Example

Step 1: invoke `procspawn::init` as the first operation in `main`. A spawned
process starts the executable again and re-enters `main`, so any code before
this call runs again in every child process. Keep application setup and other
side effects after it.

```rust
fn main() {
    procspawn::init();
    // Application setup starts here.
}
```

Step 2: now you can start spawning functions:

```rust
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();
```

## License and Links

- [Documentation]https://docs.rs/procspawn/
- [Issue Tracker]https://github.com/mitsuhiko/procspawn/issues
- [Examples]https://github.com/mitsuhiko/procspawn/tree/master/examples
- License: [Apache-2.0]https://github.com/mitsuhiko/procspawn/blob/master/LICENSE-APACHE