pub trait Switchboard {
type From<'message>;
type To<'message>;
#[must_use = "switchboard outputs must be routed or settled"]
fn route<'message>(&mut self, input: Self::From<'message>) -> Self::To<'message>;
}
#[cfg(test)]
mod tests {
use super::*;
struct Router;
impl Switchboard for Router {
type From<'message> = &'message str;
type To<'message> = usize;
fn route<'message>(&mut self, input: Self::From<'message>) -> Self::To<'message> {
input.len()
}
}
#[test]
fn switchboard_routes_its_declared_input_to_its_declared_output() {
assert_eq!(Router.route("route me"), 8);
}
}