pub trait OperationGenerator { type O1: Operation; type O2: Operation; // Required method fn generate(&self, device: &Device) -> (Self::O1, Self::O2); }