Crate clap

Command Line Argument Parser for Rust

Quick Links:

Aspirations

While these aspirations can be at odds with fast build times and low binary size, we will still strive to keep these reasonable for the flexibility you get. Check out the argparse-benchmarks for CLI parsers optimized for other use cases.

Example

Run

$ cargo add clap --features derive

(See also [feature flag reference][_features])

Then define your CLI in main.rs:

# #[cfg(feature = "derive")] {
use clap::Parser;

/// Simple program to greet a person
#[derive(Parser, Debug)]
#[command(version, about, long_about = None)]
struct Args {
    /// Name of the person to greet
    #[arg(short, long)]
    name: String,

    /// Number of times to greet
    #[arg(short, long, default_value_t = 1)]
    count: u8,
}

fn main() {
    let args = Args::parse();

    for _ in 0..args.count {
        println!("Hello {}!", args.name);
    }
}
# }

And try it out:

$ demo --help
A simple to use, efficient, and full-featured Command Line Argument Parser

Usage: demo[EXE] [OPTIONS] --name <NAME>

Options:
  -n, --name <NAME>    Name of the person to greet
  -c, --count <COUNT>  Number of times to greet [default: 1]
  -h, --help           Print help
  -V, --version        Print version

$ demo --name Me
Hello Me!

(version number and .exe extension on windows replaced by placeholders)

See also the derive [tutorial][_derive::_tutorial] and [reference][_derive]

Related Projects

Augment clap:

CLI Helpers

Testing

Documentation:

Modules

Type Aliases

Macros