pub trait Agent { // Required methods fn generate() -> Result<Box<Self>, &'static str> where Self: Sized; fn collect(&self) -> Result<String, &'static str>; fn tick(&mut self) -> Result<(), &'static str>; }