3 个不稳定版本
0.2.0 | 2019年1月31日 |
---|---|
0.1.1 | 2019年1月31日 |
0.1.0 | 2019年1月30日 |
8 在 #sender-receiver
每月23次 下载
用于 tentacle-ping
11KB
159 行
Generic-channel
Generic-channel 提供了在 Rust 社区中广泛使用的几种通道实现之间的通用抽象特性 Sender
、Receiver
。
目前支持的通道实现
- std
- crossbeam-channel
- futures
注意:您需要在 Cargo.toml
中启用这些功能,使用 all
标志启用所有功能。
处理函数只想处理发送者或接收者发送/接收消息,而不关心实际类型或发送者是否为 crossbeam 发送者或 futures 发送者。
示例
# extern crate generic_channel;
# extern crate crossbeam_channel;
use generic_channel::{Sender, TrySendError};
// this method do not care about sender type.
fn event_producer<S: Sender<i32>>(sender: S) -> Result<(), TrySendError<i32>> {
for i in 1..10 {
sender.try_send(i)?
}
Ok(())
}
// we can pass crossbeam channel to event_producer
let (sender, receiver) = crossbeam_channel::unbounded::<i32>();
event_producer(sender);
assert_eq!((1..10).map(|_| receiver.recv().unwrap()).collect::<Vec<_>>(), (1..10).collect::<Vec<_>>());
// we can also pass a std Sender or a futures Sender
let (sender, receiver) = std::sync::mpsc::channel::<i32>();
event_producer(sender);
assert_eq!((1..10).map(|_| receiver.recv().unwrap()).collect::<Vec<_>>(), (1..10).collect::<Vec<_>>());
文档
许可证
MIT
依赖项
~98KB