pub trait Event { // Required methods fn topics(&self, env: &Env) -> Vec<Val>; fn data(&self, env: &Env) -> Val; // Provided method fn publish(&self, env: &Env) { ... } }