3 个版本 (重大更改)

0.3.0 2024 年 5 月 17 日
0.2.0 2024 年 5 月 3 日
0.1.0 2024 年 5 月 3 日

#3#exposed

MIT/Apache

52KB
1.5K SLoC

用于创建基于事件的库

概述

该库包含 2 个特质

  • Receive: 用于发送事件的通用接口
  • View: 用于查看事件的通用接口

查看器返回值;

接收器返回值,ReceiverResult

  • Continue: 正常处理输出(类似于 Some
  • Stop: 停止处理输出(类似于 None`)
  • Delete: 返回带有接收器应删除标志的事件,这特别用于与路由器通信,以便在允许事件通过的同时干净地销毁拦截器

存储接收器和查看器的方式有多种

  • RcLinkerArcLinker: 智能指针,当它被丢弃时,将标记任何 RcLinkedArcLinked 的实例为删除准备,清理任何悬挂引用。
  • Exposed: 一个接收器的容器,允许多个 Viewers 预先附加
  • Router:一个接收器的容器,允许另一个路由器在事件开始时拦截它,通过重复拦截函数,将其委派给较低的路由器,允许抽象级别,拦截器执行预期操作而不破坏路由器的其余部分。

方法

接收器充当一种懒惰的垃圾收集器。

当接收器标记希望被删除(Delete)时,应预期在引入标记之前发生的一切,包括观众和拦截器。

这意味着如果收到 Delete,预期所有先前系统都已运行,责任落在接收器上,以 最小干扰 继续事件传播。

对此例外的是 Stop,表示已做出退出事件传播的决定。

这意味着如果收到 Stop,预期并非所有先前系统都已运行,责任落在接收器上,以 最小影响 退出事件传播。

依赖关系

~500KB
~11K SLoC