pub trait Router<C>: Send + Sync + 'static {
type Key: Clone + Hash + Eq + Display + Send + Sync;
// Required method
fn route(&self, envelope: &Envelope) -> Outcome<Self::Key>;
// Provided method
fn update(&self, _config: &C) { ... }
}