handler_table

Crates.iohandler_table
lib.rshandler_table
version0.1.2
created_at2023-05-09 15:56:17.20675+00
updated_at2025-01-15 17:14:32.287598+00
descriptionA lock-free table of event handlers
homepagehttps://github.com/arceos-org/arceos
repositoryhttps://github.com/arceos-org/handler_table
max_upload_size
id860649
size6,985
core (github:arceos-org:core)

documentation

https://docs.rs/handler_table

README

handler_table

Crates.io Docs.rs CI

A lock-free table of event handlers.

Examples

use handler_table::HandlerTable;

static TABLE: HandlerTable<8> = HandlerTable::new();

TABLE.register_handler(0, || {
   println!("Hello, event 0!");
});
TABLE.register_handler(1, || {
   println!("Hello, event 1!");
});

assert!(TABLE.handle(0)); // print "Hello, event 0!"
assert!(!TABLE.handle(2)); // unregistered

assert!(TABLE.unregister_handler(2).is_none());
let func = TABLE.unregister_handler(1).unwrap(); // retrieve the handler
func(); // print "Hello, event 1!"

assert!(!TABLE.handle(1)); // unregistered
Commit count: 5

cargo fmt