Application

Trait Application 

Source
pub trait Application:
    Sized
    + Default
    + 'static {
    type Cmd: Command + Configurable<Self::Cfg>;
    type Cfg: Config;
    type Paths: Default + ExePath + RootPath;

Show 17 methods // Required methods fn config(&self) -> &Self::Cfg; fn state(&self) -> &State<Self>; fn state_mut(&mut self) -> &mut State<Self>; fn register_components( &mut self, command: &Self::Cmd, ) -> Result<(), FrameworkError>; fn after_config(&mut self, config: Self::Cfg) -> Result<(), FrameworkError>; // Provided methods fn run<I>(app_cell: &'static Cell<Lock<Self>>, args: I) where I: IntoIterator<Item = String> { ... } fn init(&mut self, command: &Self::Cmd) -> Result<(), FrameworkError> { ... } fn framework_components( &mut self, command: &Self::Cmd, ) -> Result<Vec<Box<dyn Component<Self>>>, FrameworkError> { ... } fn load_config(&mut self, path: &Path) -> Result<Self::Cfg, FrameworkError> { ... } fn name(&self) -> &'static str { ... } fn description(&self) -> &'static str { ... } fn version(&self) -> Version { ... } fn authors(&self) -> Vec<String> { ... } fn term_colors(&self, command: &Self::Cmd) -> ColorChoice { ... } fn tracing_config(&self, command: &Self::Cmd) -> Config { ... } fn handle_signal(&mut self, signal: Signal) -> Result<(), FrameworkError> { ... } fn shutdown(&mut self, shutdown: Shutdown) -> ! { ... }
}
Expand description

Abscissa core prelude Application types implementing this trait own global application state, including configuration and arbitrary other values stored within application components.

Application lifecycle is handled by a set of components owned by types implementing this trait. It also ties together the following:

  • Cmd: application entrypoint
  • Config : application configuration
  • Paths: paths to various resources within the application

Required Associated Types§

Source

type Cmd: Command + Configurable<Self::Cfg>

Application (sub)command which serves as the main entry point.

Source

type Cfg: Config

Configuration type used by this application.

Source

type Paths: Default + ExePath + RootPath

Paths to application resources,

Required Methods§

Source

fn config(&self) -> &Self::Cfg

Accessor for application configuration.

Source

fn state(&self) -> &State<Self>

Borrow the application state immutably.

Source

fn state_mut(&mut self) -> &mut State<Self>

Borrow the application state mutably.

Source

fn register_components( &mut self, command: &Self::Cmd, ) -> Result<(), FrameworkError>

Register all components used by this application

Source

fn after_config(&mut self, config: Self::Cfg) -> Result<(), FrameworkError>

Post-configuration lifecycle callback.

Called regardless of whether config is loaded to indicate this is the time in app lifecycle when configuration would be loaded if possible.

This method is responsible for invoking the after_config handlers on all components in the registry. This is presently done in the standard application template, but is not otherwise handled directly by the framework (as ownership precludes it).

Provided Methods§

Source

fn run<I>(app_cell: &'static Cell<Lock<Self>>, args: I)
where I: IntoIterator<Item = String>,

Run application with the given command-line arguments and running the appropriate Command type.

Source

fn init(&mut self, command: &Self::Cmd) -> Result<(), FrameworkError>

Load this application’s configuration and initialize its components.

Source

fn framework_components( &mut self, command: &Self::Cmd, ) -> Result<Vec<Box<dyn Component<Self>>>, FrameworkError>

Initialize the framework’s default set of components, potentially sourcing terminal and tracing options from command line arguments.

Source

fn load_config(&mut self, path: &Path) -> Result<Self::Cfg, FrameworkError>

Load configuration from the given path.

Returns an error if the configuration could not be loaded.

Source

fn name(&self) -> &'static str

Name of this application as a string.

Source

fn description(&self) -> &'static str

Description of this application.

Source

fn version(&self) -> Version

Version of this application.

Source

fn authors(&self) -> Vec<String>

Authors of this application.

Source

fn term_colors(&self, command: &Self::Cmd) -> ColorChoice

Color configuration for this application.

Source

fn tracing_config(&self, command: &Self::Cmd) -> Config

Get the tracing configuration for this application.

Source

fn handle_signal(&mut self, signal: Signal) -> Result<(), FrameworkError>

Handle a Unix signal received by this application

Source

fn shutdown(&mut self, shutdown: Shutdown) -> !

Shut down this application gracefully, exiting with success.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§