9 个重大版本

0.12.2 2023 年 9 月 14 日
0.12.0 2023 年 7 月 22 日
0.11.0 2023 年 6 月 28 日

221 in 并发


3 个 Crates 中使用(通过 logid-core

MIT 许可证

65KB
974

evident

build-test mantra-sync crates.io

此 crate 使您能够轻松地为 Rust 应用程序创建自定义的多线程 pub/sub 功能。它使用 事件 在发布者和订阅者之间发送信息,并使用 ID 订阅和识别这些 事件(因此为 evIDent)。

pub/sub 通信通过一个中央静态 发布者 进行,该发布者捕获一组事件,并将它们转发给订阅者。为了允许在不同场景中使用 evident,必须为每个场景创建一个发布者,并且不能由 evident 本身提供。请参阅下面的设置部分,了解如何创建您的自定义 pub/sub 实例。

设置

要自定义 evident 以适应您的用例,您需要实现以下特质

  • Id ... 定义用于识别事件的 ID 结构
  • EventEntry ... 允许向事件添加附加信息
  • IntermediaryEvent ... 允许自动捕获超出作用域的事件

用于进一步自定义 evident 的可选特质

  • Filter ... 防止捕获事件
  • Msg ... 允许创建与事件一起发送的自定义消息

创建您的 pub/sub 实例

示例

用法

在创建自己的发布者之后,您可以使用 set_event!() 宏来设置事件。

示例

let some_id = MinId { id: 3 };
let msg = "Some msg";

let sub = PUBLISHER.subscribe(some_id).unwrap();

set_event!(some_id, msg).finalize();

let event = sub
    .get_receiver()
    .recv_timeout(std::time::Duration::from_millis(100))
    .unwrap();

注意: finalize() 被显式设置以确保事件在订阅尝试接收它之前发送。否则,它将在事件超出作用域(被丢弃)后发送。

许可证

MIT 许可证

依赖项

~580KB