7个版本 (4个重大更新)
0.5.0 | 2023年8月24日 |
---|---|
0.4.0 | 2023年2月28日 |
0.3.0 | 2022年3月23日 |
0.2.1 | 2021年12月24日 |
0.1.0-dev.1 | 2021年4月27日 |
#510 in 异步
每月462次下载
在10个crate中使用(通过bonsaidb-core)
21KB
411 代码行
Circulate
Circulate是一个轻量级的发布/订阅框架,支持异步和非异步代码。该项目是为BonsaiDb编写的。虽然BonsaiDb的异步依赖于tokio,但这个crate由于出色的crate flume而与运行时无关。
异步示例
let relay = Relay::default();
let subscriber = relay.create_subscriber();
subscriber.subscribe_to(&"some topic")?;
relay.publish(&"some topic", &AnySerializableType)?;
let message = subscriber.receiver().recv_async().await?;
println!(
"Received message on topic {}: {:?}",
message.topic::<String>()?,
message.payload::<AnySerializableType>()?
);
同步示例
let relay = Relay::default();
let subscriber = relay.create_subscriber();
subscriber.subscribe_to(&"some topic")?;
relay.publish(&"some topic", &AnySerializableType)?;
let message = subscriber.receiver().recv()?;
println!(
"Received message on topic {}: {:?}",
message.topic::<String>()?,
message.payload::<AnySerializableType>()?
);
开源许可
本项目,如同Khonsu Labs的所有项目一样,是开源的。此仓库可在MIT许可证或Apache许可证2.0下获得。
有关贡献的更多信息,请参阅CONTRIBUTING.md。
依赖
~2.2–8MB
~67K SLoC