3 个版本 (稳定)
1.1.0 | 2024 年 7 月 13 日 |
---|---|
1.0.0 | 2024 年 7 月 13 日 |
#218 在 并发
每月 239 次下载
14KB
121 行
pubserve
发布和观察。
Rust 的简单通用观察者模式实现。
使用方法
pubserve 非常简单易用。首先创建一个为你数据类型创建的 Publisher
use pubserve::Publisher;
let publisher = Publisher::<i32>::new();
然后,创建一个将监听发布者的订阅者
use pubserve::Subscriber;
struct MySubscriber;
impl Subscriber<i32> for MySubscriber {
fn update(&self, message: &i32) {
// Do whatever you want with the data!
println!("Received data: {}", message);
}
}
最后,将观察者订阅到发布者
use pubserve::ReferenceCounted;
let observer = MySubscriber;
let reference = ReferenceCounted::new(&observer);
publisher.subscribe(reference);
现在,每次发布数据时,所有已订阅的观察者都将收到通知
publisher.publish(42);
// STDOUT: "Received data: 42"
退订同样简单
publisher.unsubscribe(reference);
publisher.publish(42);
// Nothing will be printed
当然,可以将多个 Subscriber
实现订阅到同一个 Publisher
。当数据发布时,它们都会立即收到通知。
功能
默认情况下不启用任何功能。以下功能可用
功能 | 描述 |
---|---|
send |
使 Subscriber 特质 Send 并且线程安全。 |
async |
通过 async_trait 包 使 Subscriber 特质 Sync 和 async 。此外,通过扩展使发布方法 async 。 |
send
和 async
功能都可以同时启用,但不一定需要同时启用,如果你只需要其中一个的话。
许可证
本项目使用 MPL-2.0 许可证。有关更多信息,请参阅 LICENSE 文件。通过提交到这个存储库,你同意在你的贡献下使用 MPL-2.0 许可证。
依赖
~120KB