<!DOCTYPE html><htmllang="en"><head><metacharset="utf-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><metaname="generator"content="rustdoc"><metaname="description"content="Command Line Argument Parser for Rust"><title>clap - Rust</title><linkrel="preload"as="font"type="font/woff2"crossoriginhref="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><linkrel="preload"as="font"type="font/woff2"crossoriginhref="../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><linkrel="preload"as="font"type="font/woff2"crossoriginhref="../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><linkrel="preload"as="font"type="font/woff2"crossoriginhref="../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><linkrel="preload"as="font"type="font/woff2"crossoriginhref="../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><linkrel="stylesheet"href="../static.files/normalize-76eba96aa4d2e634.css"><linkrel="stylesheet"href="../static.files/rustdoc-5bc39a1768837dd0.css"><metaname="rustdoc-vars"data-root-path="../"data-static-root-path="../static.files/"data-current-crate="clap"data-themes=""data-resource-suffix=""data-rustdoc-version="1.77.1 (7cf61ebde 2024-03-27)"data-channel="1.77.1"data-search-js="search-dd67cee4cfa65049.js"data-settings-js="settings-4313503d2e1961c2.js"><scriptsrc="../static.files/storage-4c98445ec4002617.js"></script><scriptdefersrc="../crates.js"></script><scriptdefersrc="../static.files/main-48f368f3872407c8.js"></script><noscript><linkrel="stylesheet"href="../static.files/noscript-04d5337699b92874.css"></noscript><linkrel="alternate icon"type="image/png"href="../static.files/favicon-16x16-8b506e7a72182f1c.png"><linkrel="alternate icon"type="image/png"href="../static.files/favicon-32x32-422f7d1d52889060.png"><linkrel="icon"type="image/svg+xml"href="../static.files/favicon-2c020d218678b618.svg"></head><bodyclass="rustdoc mod crate"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><navclass="mobile-topbar"><buttonclass="sidebar-menu-toggle"title="show sidebar"></button><aclass="logo-container"href="../clap/index.html"><imgsrc="https://raw.githubusercontent.com/clap-rs/clap/master/assets/clap.png"alt=""></a></nav><navclass="sidebar"><divclass="sidebar-crate"><aclass="logo-container"href="../clap/index.html"><imgsrc="https://raw.githubusercontent.com/clap-rs/clap/master/assets/clap.png"alt="logo"></a><h2><ahref="../clap/index.html">clap</a><spanclass="version">4.5.4</span></h2></div><divclass="sidebar-elems"><ulclass="block">
<main><divclass="width-limiter"><navclass="sub"><formclass="search-form"><span></span><divid="sidebar-button"tabindex="-1"><ahref="../clap/all.html"title="show sidebar"></a></div><inputclass="search-input"name="search"aria-label="Run search in the documentation"autocomplete="off"spellcheck="false"placeholder="Click or press ‘S’ to search, ‘?’ for more options…"type="search"><divid="help-button"tabindex="-1"><ahref="../help.html"title="help">?</a></div><divid="settings-menu"tabindex="-1"><ahref="../settings.html"title="settings"><imgwidth="22"height="22"alt="Change settings"src="../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><sectionid="main-content"class="content"><divclass="main-heading"><h1>Crate <aclass="mod"href="#">clap</a><buttonid="copy-path"title="Copy item path to clipboard"><imgsrc="../static.files/clipboard-7571035ce49a181d.svg"width="19"height="18"alt="Copy item path"></button></h1><spanclass="out-of-band"><aclass="src"href="../src/clap/lib.rs.html#6-115">source</a> · <buttonid="toggle-all-docs"title="collapse all docs">[<span>−</span>]</button></span></div><detailsclass="toggle top-doc"open><summaryclass="hideme"><span>Expand description</span></summary><divclass="docblock"><blockquote>
<p><strong>Command Line Argument Parser for Rust</strong></p>
</blockquote>
<p>Quick Links:</p>
<ul>
<li>Derive [tutorial][_derive::_tutorial::chapter_0] and [reference][_derive]</li>
<li>Builder [tutorial][_tutorial::chapter_0] and <ahref="index.html">reference</a></li>
<li>Out of the box, users get a polished CLI experience
<ul>
<li>Including common argument behavior, help generation, suggested fixes for users, colored output, <ahref="https://github.com/clap-rs/clap/tree/master/clap_complete">shell completions</a>, etc</li>
</ul>
</li>
<li>Flexible enough to port your existing CLI interface
<ul>
<li>However, we won’t necessarily streamline support for each use case</li>
</ul>
</li>
<li>Reasonable parse performance</li>
<li>Resilient maintainership, including
<ul>
<li>Willing to break compatibility rather than batching up breaking changes in large releases</li>
<li>Leverage feature flags to keep to one active branch</li>
<li>Being under <ahref="https://github.com/rust-cli/team/">WG-CLI</a> to increase the bus factor</li>
</ul>
</li>
<li>We follow semver and will wait about 6-9 months between major breaking changes</li>
<li>We will support the last two minor Rust releases (MSRV, currently 1.74)</li>
</ul>
<p>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
<ahref="https://github.com/rust-cli/argparse-benchmarks-rs">argparse-benchmarks</a> for
<li><ahref="https://crates.io/crates/assert_cmd"><code>assert_cmd</code></a> and <ahref="https://crates.io/crates/assert_fs"><code>assert_fs</code></a>: Customized testing</li>
</ul>
<p>Documentation:</p>
<ul>
<li><ahref="https://rust-cli.github.io/book/index.html">Command-line Apps for Rust</a> book</li>
</div></details><h2id="modules"class="section-header">Modules<ahref="#modules"class="anchor">§</a></h2><ulclass="item-table"><li><divclass="item-name"><aclass="mod"href="builder/index.html"title="mod clap::builder">builder</a></div><divclass="desc docblock-short">Define <ahref="struct.Command.html"title="struct clap::Command"><code>Command</code></a> line <ahref="struct.Arg.html"title="struct clap::Arg">arguments</a></div></li><li><divclass="item-name"><aclass="mod"href="error/index.html"title="mod clap::error">error</a></div><divclass="desc docblock-short">Error reporting</div></li><li><divclass="item-name"><aclass="mod"href="parser/index.html"title="mod clap::parser">parser</a></div><divclass="desc docblock-short"><ahref="struct.Command.html"title="struct clap::Command"><code>Command</code></a> line argument parser</div></li></ul><h2id="macros"class="section-header">Macros<ahref="#macros"class="anchor">§</a></h2><ulclass="item-table"><li><divclass="item-name"><aclass="macro"href="macro.arg.html"title="macro clap::arg">arg</a></div><divclass="desc docblock-short">Create an <ahref="struct.Arg.html"title="struct clap::Arg"><code>Arg</code></a> from a usage string.</div></li><li><divclass="item-name"><aclass="macro"href="macro.command.html"title="macro clap::command">command</a></div><divclass="desc docblock-short">Requires <code>cargo</code> feature flag to be enabled.</div></li><li><divclass="item-name"><aclass="macro"href="macro.value_parser.html"title="macro clap::value_parser">value_parser</a></div><divclass="desc docblock-short">Select a <ahref="builder/struct.ValueParser.html"title="struct clap::builder::ValueParser"><code>ValueParser</code></a> implementation from the intended type</div></li></ul><h2id="structs"class="section-header">Structs<ahref="#structs"class="anchor">§</a></h2><ulclass="item-table"><li><divclass="item-name"><aclass="struct"href="struct.Arg.html"title="struct clap::Arg">Arg</a></div><divclass="desc docblock-short">The abstract representation of a command line argument. Used to set all the options and
relationships that define a valid argument for the program.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ArgGroup.html"title="struct clap::ArgGroup">ArgGroup</a></div><divclass="desc docblock-short">Family of related <ahref="struct.Arg.html"title="struct clap::Arg">arguments</a>.</div></li><li><divclass="item-name"><aclass="struct"href="struct.ArgMatches.html"title="struct clap::ArgMatches">ArgMatches</a></div><divclass="desc docblock-short">Container for parse results.</div></li><li><divclass="item-name"><aclass="struct"href="struct.Command.html"title="struct clap::Command">Command</a></div><divclass="desc docblock-short">Build a command-line interface.</div></li><li><divclass="item-name"><aclass="struct"href="struct.Id.html"title="struct clap::Id">Id</a></div><divclass="desc docblock-short"><ahref="struct.Arg.html"title="struct clap::Arg"><code>Arg</code></a> or <ahref="struct.ArgGroup.html"title="struct clap::ArgGroup"><code>ArgGroup</code></a> identifier</div></li></ul><h2id="enums"class="section-header">Enums<ahref="#enums"class="anchor">§</a></h2><ulclass="item-table"><li><divclass="item-name"><aclass="enum"href="enum.ArgAction.html"title="enum clap::ArgAction">ArgAction</a></div><divclass="desc docblock-short">Behavior of arguments when they are encountered while parsing</div></li><li><divclass="item-name"><aclass="enum"href="enum.ColorChoice.html"title="enum clap::ColorChoice">ColorChoice</a></div><divclass="desc docblock-short">Represents the color preferences for program output</div></li><li><divclass="item-name"><aclass="enum"href="enum.ValueHint.html"title="enum clap::ValueHint">ValueHint</a></div><divclass="desc docblock-short">Provide shell with hint on how to complete an argument.</div></li></ul><h2id="traits"class="section-header">Traits<ahref="#traits"class="anchor">§</a></h2><ulclass="item-table"><li><divclass="item-name"><aclass="trait"href="trait.Args.html"title="trait clap::Args">Args</a></div><divclass="desc docblock-short">Parse a set of arguments into a user-defined container.</div></li><li><divclass="item-name"><aclass="trait"href="trait.CommandFactory.html"title="trait clap::CommandFactory">CommandFactory</a></div><divclass="desc docblock-short">Create a <ahref="struct.Command.html"title="struct clap::Command"><code>Command</code></a> relevant for a user-defined container.</div></li><li><divclass="item-name"><aclass="trait"href="trait.FromArgMatches.html"title="trait clap::FromArgMatches">FromArgMatches</a></div><divclass="desc docblock-short">Converts an instance of <ahref="struct.ArgMatches.html"title="struct clap::ArgMatches"><code>ArgMatches</code></a> to a user-defined container.</div></li><li><divclass="item-name"><aclass="trait"href="trait.Parser.html"title="trait clap::Parser">Parser</a></div><divclass="desc docblock-short">Parse command-line arguments into <code>Self</code>.</div></li><li><divclass="item-name"><aclass="trait"href="trait.Subcommand.html"title="trait clap::Subcommand">Subcommand</a></div><divclass="desc docblock-short">Parse a sub-command into a user-defined enum.</div></li><li><divclass="item-name"><aclass="trait"href="trait.ValueEnum.html"title="trait clap::ValueEnum">ValueEnum</a></div><divclass="desc docblock-short">Parse arguments into enums.</div></li></ul><h2id="types"class="section-header">Type Aliases<ahref="#types"class="anchor">§</a></h2><ulclass="item-table"><li><divclass="item-name"><aclass="type"href="type.Error.html"title="type clap::Error">Error</a></div><divclass="desc docblock-short">Command Line Argument Parser Error</div></li></ul></section></div></main></body></html>