5 个版本 (破坏性更新)
0.6.0 | 2023 年 9 月 5 日 |
---|---|
0.5.0 | 2023 年 7 月 10 日 |
0.4.0 | 2023 年 7 月 9 日 |
0.3.0 | 2023 年 7 月 9 日 |
0.2.0 | 2023 年 7 月 9 日 |
#266 在 模板引擎 中
每月 47 次下载
5KB
rs-obs-signal
此crate实现带有可变模板参数的部分观察者模式
它使用 Rust 宏和泛型来创建一个 Signal
对象,该对象订阅给定的函数或方法,并且能够按需通知
示例
struct Actor {
actor_id: i64,
signal: signal!(&Observer, i64)
}
impl Actor {
fn subscribe_to_observer(&mut self){
self.signal.subscribe(Observer::on_notified)
}
fn notify(&self, observer: &Observer){
notify!(&self.signal, observer, self.actor_id);
}
}
impl Observer {
fn on_notified(&self, actor_id: i64){
println!("Notified by actor with id: {}", actor_id)
}
}
fn main() {
let observer = Observer{};
let mut actor = Actor{
actor_id: 42,
signal: Signal::new()
};
actor.subscribe_to_observer();
actor.notify(&observer);
}
作者
许可证
MIT 许可证 (MIT)
版权所有 © 2023 DistroRickDev
在此条件下,任何人获得此软件及其相关文档的副本(“软件”),均可免费处理该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许向获得软件的人提供此软件副本,前提是
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于对适销性、特定用途适用性和非侵权的保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任负责,无论源于合同、侵权或其他原因,无论源于、源于或与软件或使用或操作软件有关。