#框架 #路由 #事件 #事件处理 #状态管理 #相对 #应用程序状态

firespine

一个相对简单的应用程序状态、路由和事件处理的库式框架

3 个版本

0.1.3 2022年10月31日
0.1.2 2022年5月27日
0.1.1 2022年5月26日
0.1.0 2022年5月25日

#19 in #事件处理

MIT/Apache

44KB
850 代码行数,不包括注释

火棘

一个相对简单的应用程序状态、路由和事件处理的库式框架。

用法

use firespine::{Backbone, NodeHandler};

#[derive(Debug)]
struct MyNodeHandler;
impl NodeHandler for MyNodeHandler {
    // Override handler methods as needed!
    
    // For example, to receive events:
    fn handle_event<'e>(
        &'e mut self,
        event: &'e mut EventWrapper,
        context: &'e mut NodeContext,
    ) {
        if let Some(my_event) = event.downcast_ref::<MyEvent>() {
            // Handle the event! :D
        }
    }
}

#[derive(Debug)]
struct MyEvent;
impl Event for MyEvent {}

fn main() {
    let mut backbone = Backbone::from(MyNodeHandler);
    
    // 'navigate' to a path in the backbone.
    backbone.navigate("/local/world-3/play");
    
    loop {
        // Regularly call `update` in your mainloop...
        backbone.update().expect("backbone error");
        
        /// ...and fire away as you wish!
        backbone.get_context().process_event(&mut MyEvent);
    }
}

依赖

~0.7–1MB
~18K SLoC