pub trait CommandMetadata<Info> {
// Required methods
fn name(&self) -> &'static str;
fn description(&self) -> &'static str;
fn long_description(&self) -> Option<&'static str>;
fn call_with_argv(
&self,
info: Info,
argv: Vec<String>,
) -> Result<Pin<Box<dyn Future<Output = Result<Value, Error>>>>, Error>;
fn help(&self) -> Vec<&'static str>;
// Provided method
fn print_help(&self) { ... }
}