Enum docopt::Error [] [src]

pub enum Error {
    Usage(String),
    Argv(String),
    NoMatch,
    Decode(String),
    WithProgramUsage(Box<Error>, String),
    Help,
    Version(String),
}

Represents the different types of Docopt errors.

This error type has a lot of variants. In the common case, you probably don't care why Docopt has failed, and would rather just quit the program and show an error message instead. The exit method defined on the Error type will do just that. It will also set the exit code appropriately (no error for --help or --version, but an error code for bad usage, bad argv, no match or bad decode).

Example

Generally, you want to parse the usage string, try to match the argv and then quit the program if there was an error reported at any point in that process. This can be achieved like so:

use docopt::Docopt;

static USAGE: &'static str = "
Usage: ...
";

let args = Docopt::new(USAGE)
                  .and_then(|d| d.parse())
                  .unwrap_or_else(|e| e.exit());

Variants

Usage(String)

Parsing the usage string failed.

This error can only be triggered by the programmer, i.e., the writer of the Docopt usage string. This error is usually indicative of a bug in your program.

Argv(String)

Parsing the argv specified failed.

The payload is a string describing why the arguments provided could not be parsed.

This is distinct from NoMatch because it will catch errors like using flags that aren't defined in the usage string.

NoMatch

The given argv parsed successfully, but it did not match any example usage of the program.

Regrettably, there is no descriptive message describing why the given argv didn't match any of the usage strings.

Decode(String)

This indicates a problem decoding a successful argv match into a decodable value.

WithProgramUsage(Box<Error>, String)

Parsing failed, and the program usage should be printed next to the failure message. Typically this wraps Argv and NoMatch errors.

Help

Decoding or parsing failed because the command line specified that the help message should be printed.

Version(String)

Decoding or parsing failed because the command line specified that the version should be printed

The version is included as a payload to this variant.

Methods

impl Error
[src]

fn fatal(&self) -> bool

Return whether this was a fatal error or not.

Non-fatal errors include requests to print the help or version information of a program, while fatal errors include those such as failing to decode or parse.

fn exit(&self) -> !

Print this error and immediately exit the program.

If the error is non-fatal (e.g., Help or Version), then the error is printed to stdout and the exit status will be 0. Otherwise, when the error is fatal, the error is printed to stderr and the exit status will be 1.

Trait Implementations

impl Debug for Error
[src]

fn fmt(&self, __arg_0: &mut Formatter) -> Result

Formats the value using the given formatter.

impl Display for Error
[src]

fn fmt(&self, f: &mut Formatter) -> Result

Formats the value using the given formatter.

impl StdError for Error
[src]

fn description(&self) -> &str

A short description of the error. Read more

fn cause(&self) -> Option<&StdError>

The lower-level cause of this error, if any. Read more