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

heph-inbox

设计为用作actor邮箱的有限容量通道。也支持一次性通道。

8个版本

0.2.3 2022年8月27日
0.2.2 2021年8月14日
0.2.1 2021年6月3日
0.1.3 2021年5月31日
0.1.1 2021年4月8日

#945异步

27 每月下载量
2 crate 中使用

MIT 许可证

78KB
1.5K SLoC

邮箱

License: MIT Crates.io Docs

有限容量通道。

该通道是一个多生产者、单消费者(MPSC)的有限队列。它被设计为用作actor的邮箱,遵循actor模型

示例

简单创建一个通道并在其上发送消息。

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

许可证

在MIT许可证下许可(LICENSEhttps://opensource.org/licenses/MIT)。

贡献

除非您明确表示,否则您提交给工作内容的任何贡献都应按上述方式许可,不得附加任何其他条款或条件。

无运行时依赖

特性