use clap::ArgMatches; use crate::rules::errors::Error; use crate::utils::reader::Reader; use crate::utils::writer::Writer; pub trait Command { fn name(&self) -> &'static str; fn command(&self) -> clap::Command; fn execute( &self, args: &ArgMatches, writer: &mut Writer, reader: &mut Reader, ) -> Result; }