4JYVD3CKHUPNV3BGNFH36SVSYU7RBESFDMPOLFPALMPG74FZEGTQC use std::collections::HashMap;pub struct Message {pub kind: String,pub json: String,}pub trait MessageHandler {fn handle(&self, msg: &Message);}pub struct Mediator {storage: HashMap<String, Vec<&'static dyn MessageHandler>>,}impl Mediator {pub fn new() -> Self {Self {storage: HashMap::with_capacity(100),}}pub fn add(&mut self, kind: String, handler: &'static dyn MessageHandler) {let key = kind.clone();if self.storage.contains_key(&key) {let handlers = self.storage.get_mut(&key).unwrap();handlers.push(handler);} else {let mut handlers: Vec<&'static dyn MessageHandler> = Vec::new();handlers.push(handler);self.storage.insert(key, handlers);}}pub fn invoke(&self, msg: &Message) {let kind = msg.kind.clone();if self.storage.contains_key(&kind) {let handlers = self.storage.get(&kind).unwrap();for handler in handlers {handler.handle(msg);}}}}
use std::collections::HashMap;pub struct Message {pub kind: String,pub json: String,}pub trait MessageHandler {fn handle(&self, msg: &Message);}pub struct Mediator {storage: HashMap<String, Vec<&'static dyn MessageHandler>>,}impl Mediator {pub fn new() -> Self {Self {storage: HashMap::with_capacity(100),}}pub fn add(&mut self, kind: String, handler: &'static dyn MessageHandler) {let key = kind.clone();if self.storage.contains_key(&key) {let handlers = self.storage.get_mut(&key).unwrap();handlers.push(handler);} else {let mut handlers: Vec<&'static dyn MessageHandler> = Vec::new();handlers.push(handler);self.storage.insert(key, handlers);}}pub fn invoke(&self, msg: &Message) {let kind = msg.kind.clone();if self.storage.contains_key(&kind) {let handlers = self.storage.get(&kind).unwrap();for handler in handlers {handler.handle(msg);}}}}