EGY4FRB6W4UYNKO25HK26NC66NMXR4FM2DGQPW3UGFZQ64Q2EXCAC
struct Message<T> {
kind: String,
payload: T,
}
trait MessageHandler<T> {
fn can_handle_message_kinds(&self) -> [String];
fn handle(&self, msg: &Message<T>);
}
trait Mediator {
fn register<T>(handler: dyn MessageHandler<T>);
fn signal<T>(msg: &Message<T>);
}