heph-inbox 0.2.3

Bounded capacity channel designed to be used as inbox for actors. Also supports one shot channels.
Documentation
# Inbox

[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)
[![Crates.io](https://img.shields.io/crates/v/heph-inbox.svg)](https://crates.io/crates/heph-inbox)
[![Docs](https://docs.rs/heph-inbox/badge.svg)](https://docs.rs/heph-inbox)

Bounded capacity channel.

The channel is a multi-producer, single-consumer (MPSC) bounded queue. It is
designed to be used as inbox for actors, following the [actor model].

[actor model]: https://en.wikipedia.org/wiki/Actor_model

# Examples

Simple creation of a channel and sending a message over it.

```rust
use std::thread;

use heph_inbox::RecvError;

// Create a new small channel.
let (mut sender, mut receiver) = heph_inbox::new_small();

let sender_handle = thread::spawn(move || {
    if let Err(err) = sender.try_send("Hello world!".to_owned()) {
        panic!("Failed to send value: {}", err);
    }
});

let receiver_handle = thread::spawn(move || {
    // NOTE: this is just an example don't actually use a loop like this, it
    // will waste CPU cycles when the channel is empty!
    loop {
        match receiver.try_recv() {
            Ok(value) => println!("Got a value: {}", value),
            Err(RecvError::Empty) => continue,
            Err(RecvError::Disconnected) => break,
        }
    }
});

sender_handle.join().unwrap();
receiver_handle.join().unwrap();
```

## License

Licensed under the MIT license ([LICENSE](LICENSE) or
https://opensource.org/licenses/MIT).

### Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in the work by you shall be licensed as above, without any
additional terms or conditions.