use crate::config::AppKeyMapping; use crate::context::AppContext; use crate::error::JoshutoResult; use crate::ui::AppBackend; pub trait AppExecute { fn execute( &self, context: &mut AppContext, backend: &mut AppBackend, keymap_t: &AppKeyMapping, ) -> JoshutoResult; } pub trait NumberedExecute { fn numbered_execute( &self, number_prefix: usize, context: &mut AppContext, backend: &mut AppBackend, keymap_t: &AppKeyMapping, ) -> JoshutoResult; } pub trait InteractiveExecute { fn interactive_execute(&self, context: &mut AppContext); } pub trait AppCommand: AppExecute + std::fmt::Display + std::fmt::Debug { fn command(&self) -> &'static str; } pub trait CommandComment { fn comment(&self) -> &'static str; }