3 个版本 (稳定)

1.1.0 2024 年 7 月 13 日
1.0.0 2024 年 7 月 13 日

#218并发

Download history 298/week @ 2024-07-13 77/week @ 2024-07-20 105/week @ 2024-07-27 42/week @ 2024-08-03 17/week @ 2024-08-10 53/week @ 2024-08-17

每月 239 次下载

MPL-2.0 许可证

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 特质 Syncasync。此外,通过扩展使发布方法 async

sendasync 功能都可以同时启用,但不一定需要同时启用,如果你只需要其中一个的话。

许可证

本项目使用 MPL-2.0 许可证。有关更多信息,请参阅 LICENSE 文件。通过提交到这个存储库,你同意在你的贡献下使用 MPL-2.0 许可证。

依赖

~120KB