pub trait TaskProcessor: Send {
type TaskInput: Clone + TaskData;
type TaskOutput: TaskData;
type TaskError: TaskData;
// Required method
fn process_task(
&mut self,
id: Uuid,
input: Self::TaskInput,
) -> Result<Self::TaskOutput, Self::TaskError>;
}