7 个版本

0.3.4 2024年6月26日
0.3.3 2024年6月26日
0.3.1 2023年10月15日
0.2.4 2023年7月25日
0.2.3 2023年4月20日

#2103 in Rust 模式

Download history • Rust 包仓库 205/week @ 2024-06-21 • Rust 包仓库 34/week @ 2024-06-28 • Rust 包仓库 27/week @ 2024-07-05 • Rust 包仓库 49/week @ 2024-07-26 • Rust 包仓库 6/week @ 2024-08-02 • Rust 包仓库

55 每月下载量

MIT/Apache

63KB
1.5K SLoC

sod-bus

sod::MutService 实现与 bus::Bus 交互。

服务实现

  • BusBroadcasterbus::Bus 广播,并在操作成功之前阻塞。
  • BusTryBroadcaster 尝试向 bus::Bus 广播,并在总线缓冲区满时可以通过 sod::RetryService 重试。
  • BusReceiverbus::BusReader 接收,在接收到元素之前阻塞。
  • BusTryReceiver 尝试从 bus::BusReader 接收,并在总线为空时可以通过 sod::RetryService 重试。

示例

use sod::MutService;
use sod_bus::{BusBroadcaster, BusReceiver};

let mut broadcaster = BusBroadcaster::with_len(1024);
let mut receiver1 = broadcaster.create_receiver();
let mut receiver2 = broadcaster.create_receiver();

broadcaster.process(1).unwrap();
broadcaster.process(2).unwrap();
broadcaster.process(3).unwrap();

assert_eq!(receiver1.process(()).unwrap(), 1);
assert_eq!(receiver1.process(()).unwrap(), 2);
assert_eq!(receiver1.process(()).unwrap(), 3);

assert_eq!(receiver2.process(()).unwrap(), 1);
assert_eq!(receiver2.process(()).unwrap(), 2);
assert_eq!(receiver2.process(()).unwrap(), 3);

依赖

~0.8–6MB
~29K SLoC