k-event-system

Crates.iok-event-system
lib.rsk-event-system
version0.1.0
created_at2025-07-20 04:38:41.179816+00
updated_at2025-07-20 04:38:41.179816+00
descriptionA very super simple event system, only three functions: subscribe, unsubscribe and publish. (and a singleton, never mind.) Supports async. (see `main-async` in examples)
homepage
repositoryhttps://github.com/kdletters/event-system
max_upload_size
id1760793
size18,859
(kdletters)

documentation

README

A very super simple event system, only three functions: subscribe, unsubscribe and publish. (and a singleton, never mind.) Supports async. (see main-async in examples)

let handle = event_system::EventSystem::singleton().subscribe(|x: &usize| println!("I am {}", x));
event_system::EventSystem::singleton().publish(&4usize);

event_system::EventSystem::singleton().subscribe(test);
event_system::EventSystem::singleton().publish(&6usize);

event_system::EventSystem::singleton().unsubscribe::<usize>(handle);
event_system::EventSystem::singleton().publish(&8usize);

event_system::EventSystem::singleton().subscribe(on_login);
event_system::EventSystem::singleton().publish(&Login);

fn test(i: &usize) {
    println!("I am F {}", i);
}

// with no params, you have to create a struct to distinguish between events
struct Login;

fn on_login(_: &Login) {
    println!("on login");
}
Output:
I am 4
I am 6
I am F 6
I am F 8
on login
Commit count: 0

cargo fmt