pub trait Unary { type Output; // Required methods fn name(&self) -> &str; fn unary(self, expr: UnaryOp) -> Self::Output; }