#channel #actor #bounded-channel #actor-model #inbox #async


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

8 releases

0.2.3 Aug 27, 2022
0.2.2 Aug 14, 2021
0.2.1 Jun 3, 2021
0.1.3 May 31, 2021
0.1.1 Apr 8, 2021

#806 in Asynchronous

37 downloads per month
Used in 2 crates

MIT license

1.5K SLoC


License: MIT Crates.io Docs

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.


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

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,



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


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.

No runtime deps