gawk-0.3.1 has been yanked.
gawk
gawk is a simple but flexible observer library for Rust.
Goals
Simplicity
gawk has a simple API using basic Rust types. The complex types needed to make it work are all abstracted away from the consumer.
Flexibility
- A
gawkPublishercan handle any number of different types of events and handlers. - You can create a handler by wrapping a simple closure in
gawk'sHandlerstruct, or you can implement theHandletrait manually on your own types. You can even do both for different handlers subscribed to the samePublisher.
Usage
Subscribe a simple closure
use ;
;
;
Subscribe a custom type with a mut handler function
use ;
;
Check out the examples directory for more!
TODO:
- Publisher supports any number of handlers / events of different types
- Derive macro for
Eventtrait - Optional async feature using Tokio
- Support handlers that take a
mut &selfreceiver when implementingHandlefor custom types to enable more complex use cases, e.g. updating some internal state when events are received
Acknowledgements
Thanks to @klaatu01 for giving me the idea to build this and the coaching I needed to wrangle Rust's type system into allowing events and handlers of multiple different types in a single publisher.