Crate gumdrop_derive[][src]

Provides derive(Options) for gumdrop crate


derive(Options) generates an implementation of the trait Options, creating an option for each field of the decorated struct.

See the gumdrop documentation for an example of its usage.

options attribute

Behavior of derive(Options) can be controlled by adding #[options(...)] attributes to one or more fields within a decorated struct.

Supported items are:

  • command indicates that a field represents a subcommand. The field must be of type Option<T> where T is a type implementing Options. Typically, this type is an enum containing subcommand option types.
  • help_flag marks an option as a help flag. The field must be bool type. Options named help will automatically receive this option.
  • no_help_flag prevents an option from being considered a help flag.
  • count marks a field as a counter value. The field will be incremented each time the option appears in the arguments, i.e. field += 1;
  • free marks a field as a positional argument field. Non-option arguments will be used to fill all free fields, in declared sequence. If the final free field is of type Vec<T>, it will contain all remaining free arguments.
  • short = "?" sets the short option name to the given character
  • no_short prevents a short option from being assigned to the field
  • long = "..." sets the long option name to the given string
  • no_long prevents a long option from being assigned to the field
  • required will cause an error if the option is not present
  • not_required will cancel a type-level required flag (see below).
  • help = "..." sets help text returned from the Options::usage method
  • meta = "..." sets the meta variable displayed in usage for options which accept an argument
  • parse(...) uses a named function to parse a value from a string. Valid parsing function types are:
    • parse(from_str = "...") for fn(&str) -> T
    • parse(try_from_str = "...") for fn(&str) -> Result<T, E> where E: Display
    • parse(from_str) uses std::convert::From::from
    • parse(try_from_str) uses std::str::FromStr::from_str

#[options(...)] may also be added at the type level. Only the flags no_help_flag, no_long, no_short, and required are supported at the type level.