# Trait clap::Subcommand

source · [−]

    pub trait Subcommand: FromArgMatches + Sized {
        fn augment_subcommands(cmd: Command) -> Command;
        fn augment_subcommands_for_update(cmd: Command) -> Command;
        fn has_subcommand(name: &str) -> bool;
    }

Expand description

Parse a sub-command into a user-defined enum.

Implementing this trait lets a parent container delegate subcommand behavior to `Self`. with:

- `#[command(subcommand)] field: SubCmd`: Attribute can be used with either struct fields or enum variants that impl `Subcommand`.
- `#[command(flatten)] Variant(SubCmd)`: Attribute can only be used with enum variants that impl `Subcommand`.

See the derive reference for attributes and best practices.

NOTE: Deriving requires the [`derive` feature flag][crate::_features]

## Example

    #[derive(clap::Parser)]
    struct Args {
       #[command(subcommand)]
       action: Action,
    }

    #[derive(clap::Subcommand)]
    enum Action {
       Add,
       Remove,
    }

## Required Methods

source

#### fn augment_subcommands(cmd: Command) -> Command

Append to `Command` so it can instantiate `Self`.

See also `CommandFactory`.

source

#### fn augment_subcommands_for_update(cmd: Command) -> Command

Append to `Command` so it can update `self`.

This is used to implement `#[command(flatten)]`

See also `CommandFactory`.

source

#### fn has_subcommand(name: &str) -> bool

Test whether `Self` can parse a specific subcommand

## Implementations on Foreign Types

source

### impl<T: Subcommand> Subcommand for Box<T>

source

#### fn augment_subcommands(cmd: Command) -> Command

source

#### fn augment_subcommands_for_update(cmd: Command) -> Command

source

#### fn has_subcommand(name: &str) -> bool

## Implementors