simpleeventmap

simpleeventstream

This allows you to register types that'll be broadcast to receivers

An example

```rust

[derive(Clone, Debug, PartialEq)]

struct Message { data: String }

let mut map = EventMap::new(); // nothing is registered by default asserteq!(map.isempty::(), true); asserteq!(map.isempty::(), true); asserteq!(map.isempty::(), true);

// register two subscriptions for the message // this returns an EventStream // which can be used as a blocking Iterator or as an async Stream let mut m1 = map.register::(); let mut m2 = map.register::();

let msg = Message{ data: String::from("hello world") }; // send the message, will return a bool if any messages were sent asserteq!(map.send(msg.clone()), true); // we should have 2 still active asserteq!(map.active::(), 2);

asserteq!(m1.next().unwrap(), msg); asserteq!(m2.next().unwrap(), msg);

// drop a subscription (will be cleaned up in the eventmap on next send) drop(m1);

let msg = Message{ data: String::from("testing") }; asserteq!(map.send(msg.clone()), true); // we only have 1 active now asserteq!(map.active::(), 1); ```

License: 0BSD