1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
// The worker trait defines what should be done when provided with input. This
// trait is automatically implemented for any Fn(I) -> O.
pub trait Worker<I> {
type Output;
fn run(&self, input: I) -> Self::Output;
}
impl<T, I, O> Worker<I> for T
where
T: Fn(I) -> O,
{
type Output = O;
fn run(&self, input: I) -> O {
self(input)
}
}