pub trait Processor {
type Input;
type Output;
type Params;
fn new() -> Self;
fn config(&mut self, params: Self::Params) -> bool;
fn input(&mut self, input: Self::Input) -> bool;
fn tick(&mut self) -> bool;
fn progress(&self) -> u32;
fn output(&mut self) -> Self::Output;
}