Crate hey_listen [] [src]

hey_listen is an event dispatcher for types.

Usage

Add this to your Cargo.toml:

[dependencies]
hey_listen = "0.1"
parking_lot = "^0.5"

and this to your crate's root:

Be careful when using this code, it's not being tested!
extern crate hey_listen;
extern crate parking_lot;

Example

Here is a quick example on how to use the event-dispatcher:

extern crate hey_listen;
extern crate parking_lot;

use hey_listen::Listener;
use hey_listen::EventDispatcher;
use std::sync::Arc;
use parking_lot::Mutex;

#[derive(Clone, Eq, Hash, PartialEq)]
enum EventEnum {
    EventVariant,
}

struct ListenerStruct {}

impl Listener<EventEnum> for ListenerStruct {
    fn on_event(&mut self, event: &EventEnum) {
        println!("I'm listening! :)");
    }
}

fn main() {
    let listener = Arc::new(Mutex::new(ListenerStruct {}));
    let mut dispatcher: EventDispatcher<EventEnum> = EventDispatcher::new();

    dispatcher.add_listener(EventEnum::EventVariant, &listener);
}

Structs

EventDispatcher

Owns a map of all listened event-variants and Weak-references to their listeners.

Traits

Listener

Every event-receiver needs to implement this trait in order to receive dispatched events. T being the type you use for events, e.g. an Enum.