gawk-0.3.2 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
gawk
Publisher
can handle any number of different types of events and handlers. - You can create a handler by wrapping a simple closure in
gawk
'sHandler
struct, or you can implement theHandle
trait 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
Event
trait - Optional async feature using Tokio
- Support handlers that take a
mut &self
receiver when implementingHandle
for 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.