#events #system #macro #key #fired

bin+lib event_system

Simple lightweight event system

2 releases

0.1.1 Dec 2, 2022
0.1.0 Dec 2, 2022

#100 in #event

MIT license

4KB

Event System

Provides a simple lightweight event system for Rust.

Crate on Crates.io

Example

The first entry in the macro is the name of the event system struct.

Any following entries take the form of struct-enum variants, where the name is the event name and the data the structure for the payload when the event is fired.

use event_system::create_event_system;

create_event_system! {
    EventSystem // <- Name of struct
    ApplicationLoad {}
    ApplicationExit {}
    KeyDown {
        key: u8,
    }
}

fn main() {
    let mut events = EventSystem::new();
    events.register_key_down(key_down);

    events.fire_application_load();
    events.fire_key_down(EventKeyDown { key: 55 });
    events.fire_application_exit();
}

fn key_down(packet: EventKeyDown) -> bool {
    println!("Key down {:?}", packet.key);
    true
}

Dependencies

~2MB
~44K SLoC