pub trait Task {
// Required methods
fn execute(&mut self) -> Schedule;
fn name(&self) -> &String;
fn input_count(&self) -> usize;
fn output_count(&self) -> usize;
fn input_id(&self, ch_id: usize) -> Option<ChannelId>;
fn tx_count(&self, ch_id: usize) -> usize;
// Provided method
fn output_id(&self, ch_id: usize) -> Option<ChannelId> { ... }
}