Trait Command

Source
pub trait Command {
    // Required methods
    fn token(&self) -> Token;
    fn autocomplete(
        &self,
        fuzzy_match: FuzzyMatch<'_>,
        input: &str,
    ) -> Option<AutocompleteSuggestion>;
    fn get_priority(
        &self,
        token_match: &TokenMatch<'_>,
    ) -> Option<CommandPriority>;
    async fn run(
        &self,
        token_match: TokenMatch<'_>,
        app_meta: &mut AppMeta,
    ) -> Result<String, String>;
    fn get_canonical_form_of(
        &self,
        token_match: &TokenMatch<'_>,
    ) -> Option<String>;

    // Provided method
    fn parse_autocomplete<'a>(
        &'a self,
        input: &'a str,
        app_meta: &'a AppMeta,
    ) -> Pin<Box<dyn Stream<Item = AutocompleteSuggestion> + 'a>> { ... }
}

Required Methods§

Source

fn token(&self) -> Token

Return a single Token representing the command’s syntax. If multiple commands are possible, Token::Or can be used as a wrapper to cover the options.

Source

fn autocomplete( &self, fuzzy_match: FuzzyMatch<'_>, input: &str, ) -> Option<AutocompleteSuggestion>

Convert a matched token into a suggestion to be displayed to the user. Note that this method is not async; any metadata that may be needed for the autocomplete should be fetched during the match_input step of the token and embedded in the match_meta property of the TokenMatch object.

Source

fn get_priority(&self, token_match: &TokenMatch<'_>) -> Option<CommandPriority>

Get the priority of the command with a given input. See CommandPriority for details.

Source

async fn run( &self, token_match: TokenMatch<'_>, app_meta: &mut AppMeta, ) -> Result<String, String>

Run the command represented by a matched token, returning the success or failure output to be displayed to the user.

Source

fn get_canonical_form_of(&self, token_match: &TokenMatch<'_>) -> Option<String>

Get the canonical form of the provided token match. Return None if the match is invalid.

Provided Methods§

Source

fn parse_autocomplete<'a>( &'a self, input: &'a str, app_meta: &'a AppMeta, ) -> Pin<Box<dyn Stream<Item = AutocompleteSuggestion> + 'a>>

A helper function to roughly provide Command::autocomplete(Command::token().match_input()), except that that wouldn’t compile for all sorts of exciting reasons.

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§