pub trait Runner {
// Required methods
fn gen(input: ArcStr) -> Self
where Self: Sized;
fn run(&self) -> Box<dyn Display>;
fn bench(&self, black_box: fn(&dyn Display));
// Provided methods
fn try_gen(input: ArcStr) -> Result<Self, Box<dyn Error>>
where Self: Sized { ... }
fn try_run(&self) -> Result<Box<dyn Display>, Box<dyn Error>> { ... }
}