I am writing a simple event handler object for observer pattern.

https://gist.github.com/run-dlang/d58d084752a1f65148b33c796535a4e2

(note: the final implementation will use an array of listeners, but I want to keep it simple for now and have only one handler per event).

Is there some way I could improve this with some D features? My main gripes with it are:

1) generic typing. I wish event handler methods such as onResize and onWindowTitle could take concrete types like WindowResize and WindowTitle rather than the generic Event struct.

2) same when emitting the event. It feels a bit verbose.

I don't want to use classes or polymorphism. I was thinking perhaps std.variant could be useful here, although I am not exactly sure how it would work in practice.

Reply via email to