2个版本
0.1.1 | 2021年4月27日 |
---|---|
0.1.0 | 2021年1月31日 |
#2235 在 嵌入式开发 中
每月41次下载
在 5 个包中使用(通过 ruspiro-interrupt)
16KB
200 行
RusPiRo Channel
用法
要使用此包,只需将其依赖项添加到您的 Cargo.toml
文件中
[dependencies]
ruspiro-channel = "0.1.1"
该包实际上实现了一个 多生产者 - 多消费者(mpmc)通道。通道本身是非阻塞的,但使用原子操作。在裸金属树莓派项目中使用时,必须确保可以使用原子操作(配置和启用MMU - 请参阅 ruspiro-mmu
包)。
创建通道提供了发送器和接收器部分。如果需要,两者都可以克隆。
use ruspiro_channel::mpmc;
fn main() {
let (tx, rx) = mpmc::channel();
tx.send(50u32);
// this is non-blocking and returns `Err` if the channel has no more data
if let Ok(value) = tx.recv() {
assert_eq!(value, 50);
}
}
当激活了 async
功能时,可以创建异步通道,接收器能够 await
可用的消息。
// it's assumed the crate is compiled with features = ["async"]
use ruspiro_channel::mpmc;
async fn foo() {
let (tx, mut rx) = mpmc::async_channel();
tx.send(42u32);
while let Some(value) = rx.next().await {
assert_eq!(value, 42);
}
}
功能
功能 | 描述 |
---|---|
async | 启用通道实现的 async 版本。 |
依赖项
~84–250KB