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 次下载

MIT 许可证

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);
}
    

作者

@DistroRickDev

许可证

License: MIT

MIT 许可证 (MIT)

版权所有 © 2023 DistroRickDev

在此条件下,任何人获得此软件及其相关文档的副本(“软件”),均可免费处理该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许向获得软件的人提供此软件副本,前提是

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于对适销性、特定用途适用性和非侵权的保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任负责,无论源于合同、侵权或其他原因,无论源于、源于或与软件或使用或操作软件有关。

无运行时依赖项