pub trait Command { // Required method fn run( &self, args: Vec<String>, opts: HashMap<Opt, OptValue>, ) -> Result<(), CommandError>; // Provided method fn opts(&self) -> Vec<Opt> { ... } }