pub trait TaskBuilder {
type Output: Send + 'static;
type Error: TError;
type Task: Task<Self::Error>;
// Required method
fn build(self, tx: SyncSender<Self::Output>) -> Self::Task;
// Provided method
fn channel_size(&self) -> usize { ... }
}