Skip to content

QuietMisdreavus/handler_map

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

handler_map

like AnyMap, but with functions instead of values

Documentation

This crate began with an idle thought: "Crates like AnyMap let you store one value of each type. What would it take to instead store a function that took that type, like a message handler?" What came out was this.

The basic idea is that you start with a message type, and a function that receives it by-value:

struct MyMessage;
fn handle_msg(_: MyMessage) {
    println!("Got your message!");
}

Then, take one of these HandlerMaps, and hand it the handler:

let mut map = HandlerMap::new();
map.insert(handle_msg);

This registers that type in the handler so you can call it later:

map.call(MyMessage);

// console prints "Got your message!"

To use this in your crate, add the following to your Cargo.toml:

[dependencies]
handler_map = "0.1.0"

Then add the following to your crate itself (if on 2015 edition):

extern crate handler_map;

About

map from types to functions that receive them

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages