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>) -> crate::Route<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>,
) -> pipecircuit::Route<Self::To<'message>> {
pipecircuit::Route::one(input.len())
}
}
#[test]
fn switchboard_routes_its_declared_input_to_its_declared_output() {
assert_eq!(Router.route("route me"), crate::Route::one(8));
}
}