mirror of
https://github.com/clap-rs/clap
synced 2025-03-04 23:37:32 +00:00
chore(docs): rebuild docs with nightly rustdoc
This commit is contained in:
parent
c5122ae2df
commit
1209a15f51
29 changed files with 1876 additions and 279 deletions
0
docs/clap/args/group/index.html
Normal file
0
docs/clap/args/group/index.html
Normal file
1
docs/clap/args/group/sidebar-items.js
Normal file
1
docs/clap/args/group/sidebar-items.js
Normal file
|
@ -0,0 +1 @@
|
|||
initSidebarItems({"struct":[["ArgGroup","ArgGroups are a family of related arguments and provide a few useful features for you. By placing arguments in a logical group, you can make easier requirement and exclusion rules. For instance, you can make an ArgGroup required, this means that one (and *only* one) argument from that group must be present. Using more than one argument from an ArgGroup causes a failure (graceful exit)."]]});
|
10
docs/clap/args/group/struct.ArgGroup.html
Normal file
10
docs/clap/args/group/struct.ArgGroup.html
Normal file
|
@ -0,0 +1,10 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="refresh" content="0;URL=../../../clap/struct.ArgGroup.html">
|
||||
</head>
|
||||
<body>
|
||||
<p>Redirecting to <a href="../../../clap/struct.ArgGroup.html">../../../clap/struct.ArgGroup.html</a>...</p>
|
||||
<script>location.replace("../../../clap/struct.ArgGroup.html" + location.search + location.hash);</script>
|
||||
</body>
|
||||
</html>
|
|
@ -41,9 +41,9 @@
|
|||
</nav>
|
||||
|
||||
<section id='main' class="content mod">
|
||||
<h1 class='fqn'><span class='in-band'>Crate <a class='mod' href=''>clap</a></span><span class='out-of-band'><span id='render-detail'>
|
||||
<h1 class='fqn'><span class='in-band'>Crate <a class='mod' href=''>clap</a><wbr></span><span class='out-of-band'><a href='stability.html'>[stability]</a> <span id='render-detail'>
|
||||
<a id="collapse-all" href="#">[-]</a> <a id="expand-all" href="#">[+]</a>
|
||||
</span><a id='src-0' class='srclink' href='../src/clap/lib.rs.html#1-934'>[src]</a></span></h1>
|
||||
</span><a id='src-0' href='../src/clap/lib.rs.html#1-934'>[src]</a></span></h1>
|
||||
<div class='docblock'>
|
||||
<h1 id="clap" class='section-header'><a
|
||||
href="#clap">clap</a></h1>
|
||||
|
@ -363,96 +363,89 @@ SUBCOMMANDS:
|
|||
<p><code>clap</code> is licensed under the MIT license. Please the LICENSE-MIT file in this repository for more information.</p>
|
||||
</div><h2 id='macros' class='section-header'><a href="#macros">Macros</a></h2>
|
||||
<table>
|
||||
<tr class=' module-item'>
|
||||
<td><a class='macro' href='macro.arg_enum!.html'
|
||||
<tr>
|
||||
<td><a class='stability Unmarked' title='No stability level'></a><a class='macro' href='macro.arg_enum!.html'
|
||||
title='clap::arg_enum!'>arg_enum!</a></td>
|
||||
<td class='docblock short'>
|
||||
<p>Convenience macro to generate more complete enums with variants to be used as a type when parsing
|
||||
<td class='docblock short'><p>Convenience macro to generate more complete enums with variants to be used as a type when parsing
|
||||
arguments.</p>
|
||||
|
||||
</td>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr class=' module-item'>
|
||||
<td><a class='macro' href='macro.crate_version!.html'
|
||||
<tr>
|
||||
<td><a class='stability Unmarked' title='No stability level'></a><a class='macro' href='macro.crate_version!.html'
|
||||
title='clap::crate_version!'>crate_version!</a></td>
|
||||
<td class='docblock short'>
|
||||
<p>Allows you pull the version for an from your Cargo.toml as MAJOR.MINOR.PATCH_PKGVERSION_PRE</p>
|
||||
|
||||
</td>
|
||||
<td class='docblock short'><p>Allows you pull the version for an from your Cargo.toml as MAJOR.MINOR.PATCH_PKGVERSION_PRE</p>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr class=' module-item'>
|
||||
<td><a class='macro' href='macro.simple_enum!.html'
|
||||
<tr>
|
||||
<td><a class='stability Unmarked' title='No stability level'></a><a class='macro' href='macro.simple_enum!.html'
|
||||
title='clap::simple_enum!'>simple_enum!</a></td>
|
||||
<td class='docblock short'>
|
||||
<p>Convenience macro generated a simple enum with variants to be used as a type when parsing
|
||||
<td class='docblock short'><p>Convenience macro generated a simple enum with variants to be used as a type when parsing
|
||||
arguments.</p>
|
||||
|
||||
</td>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr class=' module-item'>
|
||||
<td><a class='macro' href='macro.value_t!.html'
|
||||
<tr>
|
||||
<td><a class='stability Unmarked' title='No stability level'></a><a class='macro' href='macro.value_t!.html'
|
||||
title='clap::value_t!'>value_t!</a></td>
|
||||
<td class='docblock short'>
|
||||
<p>Convenience macro getting a typed value <code>T</code> where <code>T</code> implements <code>std::str::FromStr</code>
|
||||
<td class='docblock short'><p>Convenience macro getting a typed value <code>T</code> where <code>T</code> implements <code>std::str::FromStr</code>
|
||||
This macro returns a <code>Result<T,String></code> which allows you as the developer to decide
|
||||
what you'd like to do on a failed parse. There are two types of errors, parse failures
|
||||
and those where the argument wasn't present (such as a non-required argument). </p>
|
||||
|
||||
</td>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr class=' module-item'>
|
||||
<td><a class='macro' href='macro.value_t_or_exit!.html'
|
||||
<tr>
|
||||
<td><a class='stability Unmarked' title='No stability level'></a><a class='macro' href='macro.value_t_or_exit!.html'
|
||||
title='clap::value_t_or_exit!'>value_t_or_exit!</a></td>
|
||||
<td class='docblock short'>
|
||||
<p>Convenience macro getting a typed value <code>T</code> where <code>T</code> implements <code>std::str::FromStr</code>
|
||||
<td class='docblock short'><p>Convenience macro getting a typed value <code>T</code> where <code>T</code> implements <code>std::str::FromStr</code>
|
||||
This macro returns a <code>T</code> or <code>Vec<T></code> or exits with a usage string upon failure. This
|
||||
removes some of the boiler plate to handle failures from value_t! above. </p>
|
||||
|
||||
</td>
|
||||
</td>
|
||||
</tr>
|
||||
</table><h2 id='structs' class='section-header'><a href="#structs">Structs</a></h2>
|
||||
<table>
|
||||
<tr class=' module-item'>
|
||||
<td><a class='struct' href='struct.App.html'
|
||||
<tr>
|
||||
<td><a class='stability Unmarked' title='No stability level'></a><a class='struct' href='struct.App.html'
|
||||
title='clap::App'>App</a></td>
|
||||
<td class='docblock short'>
|
||||
<p>Used to create a representation of a command line program and all possible command line
|
||||
<td class='docblock short'><p>Used to create a representation of a command line program and all possible command line
|
||||
arguments for parsing at runtime.</p>
|
||||
|
||||
</td>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr class=' module-item'>
|
||||
<td><a class='struct' href='struct.Arg.html'
|
||||
<tr>
|
||||
<td><a class='stability Unmarked' title='No stability level'></a><a class='struct' href='struct.Arg.html'
|
||||
title='clap::Arg'>Arg</a></td>
|
||||
<td class='docblock short'>
|
||||
<p>The abstract representation of a command line argument used by the consumer of the library.
|
||||
<td class='docblock short'><p>The abstract representation of a command line argument used by the consumer of the library.
|
||||
Used to set all the options and relationships that define a valid argument for the program.</p>
|
||||
|
||||
</td>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr class=' module-item'>
|
||||
<td><a class='struct' href='struct.ArgMatches.html'
|
||||
<tr>
|
||||
<td><a class='stability Unmarked' title='No stability level'></a><a class='struct' href='struct.ArgGroup.html'
|
||||
title='clap::ArgGroup'>ArgGroup</a></td>
|
||||
<td class='docblock short'><p>ArgGroups are a family of related arguments and provide a few useful features for you. By
|
||||
placing arguments in a logical group, you can make easier requirement and exclusion rules. For
|
||||
instance, you can make an ArgGroup required, this means that one (and <em>only</em> one) argument
|
||||
from that group must be present. Using more than one argument from an ArgGroup causes a
|
||||
failure (graceful exit).</p>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><a class='stability Unmarked' title='No stability level'></a><a class='struct' href='struct.ArgMatches.html'
|
||||
title='clap::ArgMatches'>ArgMatches</a></td>
|
||||
<td class='docblock short'>
|
||||
<p>Used to get information about the arguments that where supplied to the program at runtime by
|
||||
<td class='docblock short'><p>Used to get information about the arguments that where supplied to the program at runtime by
|
||||
the user. To get a new instance of this struct you use <code>.get_matches()</code> of the <code>App</code> struct.</p>
|
||||
|
||||
</td>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr class=' module-item'>
|
||||
<td><a class='struct' href='struct.SubCommand.html'
|
||||
<tr>
|
||||
<td><a class='stability Unmarked' title='No stability level'></a><a class='struct' href='struct.SubCommand.html'
|
||||
title='clap::SubCommand'>SubCommand</a></td>
|
||||
<td class='docblock short'>
|
||||
<p>The abstract representation of a command line subcommand used by the consumer of the library.</p>
|
||||
|
||||
</td>
|
||||
<td class='docblock short'><p>The abstract representation of a command line subcommand used by the consumer of the library.</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table></section>
|
||||
<section id='search' class="content hidden"></section>
|
||||
|
|
|
@ -41,9 +41,9 @@
|
|||
</nav>
|
||||
|
||||
<section id='main' class="content macro">
|
||||
<h1 class='fqn'><span class='in-band'><a href='index.html'>clap</a>::<wbr><a class='macro' href=''>arg_enum!</a></span><span class='out-of-band'><span id='render-detail'>
|
||||
<h1 class='fqn'><span class='in-band'><a href='index.html'>clap</a>::<wbr><a class='macro' href=''>arg_enum!</a><wbr></span><span class='out-of-band'><span id='render-detail'>
|
||||
<a id="collapse-all" href="#">[-]</a> <a id="expand-all" href="#">[+]</a>
|
||||
</span><a id='src-10305' class='srclink' href='../src/clap/macros.rs.html#297-384'>[src]</a></span></h1>
|
||||
</span><a id='src-13314' href='../src/clap/macros.rs.html#352-439'>[src]</a></span></h1>
|
||||
<pre class='rust macro'>
|
||||
<span class='macro'>macro_rules</span><span class='macro'>!</span> <span class='ident'>arg_enum</span> {
|
||||
(<span class='kw'>enum</span> <span class='macro-nonterminal'>$</span><span class='macro-nonterminal'>e</span>:<span class='ident'>ident</span> { $(<span class='macro-nonterminal'>$</span><span class='macro-nonterminal'>v</span>:<span class='ident'>ident</span>),<span class='op'>+</span> } ) <span class='op'>=></span> {
|
||||
|
|
|
@ -41,9 +41,9 @@
|
|||
</nav>
|
||||
|
||||
<section id='main' class="content macro">
|
||||
<h1 class='fqn'><span class='in-band'><a href='index.html'>clap</a>::<wbr><a class='macro' href=''>crate_version!</a></span><span class='out-of-band'><span id='render-detail'>
|
||||
<h1 class='fqn'><span class='in-band'><a href='index.html'>clap</a>::<wbr><a class='macro' href=''>crate_version!</a><wbr></span><span class='out-of-band'><span id='render-detail'>
|
||||
<a id="collapse-all" href="#">[-]</a> <a id="expand-all" href="#">[+]</a>
|
||||
</span><a id='src-10306' class='srclink' href='../src/clap/macros.rs.html#400-408'>[src]</a></span></h1>
|
||||
</span><a id='src-13315' href='../src/clap/macros.rs.html#455-463'>[src]</a></span></h1>
|
||||
<pre class='rust macro'>
|
||||
<span class='macro'>macro_rules</span><span class='macro'>!</span> <span class='ident'>crate_version</span> {
|
||||
() <span class='op'>=></span> {
|
||||
|
|
|
@ -41,9 +41,9 @@
|
|||
</nav>
|
||||
|
||||
<section id='main' class="content macro">
|
||||
<h1 class='fqn'><span class='in-band'><a href='index.html'>clap</a>::<wbr><a class='macro' href=''>simple_enum!</a></span><span class='out-of-band'><span id='render-detail'>
|
||||
<h1 class='fqn'><span class='in-band'><a href='index.html'>clap</a>::<wbr><a class='macro' href=''>simple_enum!</a><wbr></span><span class='out-of-band'><span id='render-detail'>
|
||||
<a id="collapse-all" href="#">[-]</a> <a id="expand-all" href="#">[+]</a>
|
||||
</span><a id='src-10304' class='srclink' href='../src/clap/macros.rs.html#241-263'>[src]</a></span></h1>
|
||||
</span><a id='src-13313' href='../src/clap/macros.rs.html#296-318'>[src]</a></span></h1>
|
||||
<pre class='rust macro'>
|
||||
<span class='macro'>macro_rules</span><span class='macro'>!</span> <span class='ident'>simple_enum</span> {
|
||||
(<span class='macro-nonterminal'>$</span><span class='macro-nonterminal'>e</span>:<span class='ident'>ident</span> <span class='op'>=></span> $(<span class='macro-nonterminal'>$</span><span class='macro-nonterminal'>v</span>:<span class='ident'>ident</span>),<span class='op'>+</span>) <span class='op'>=></span> {
|
||||
|
|
|
@ -41,9 +41,9 @@
|
|||
</nav>
|
||||
|
||||
<section id='main' class="content macro">
|
||||
<h1 class='fqn'><span class='in-band'><a href='index.html'>clap</a>::<wbr><a class='macro' href=''>value_t!</a></span><span class='out-of-band'><span id='render-detail'>
|
||||
<h1 class='fqn'><span class='in-band'><a href='index.html'>clap</a>::<wbr><a class='macro' href=''>value_t!</a><wbr></span><span class='out-of-band'><span id='render-detail'>
|
||||
<a id="collapse-all" href="#">[-]</a> <a id="expand-all" href="#">[+]</a>
|
||||
</span><a id='src-10302' class='srclink' href='../src/clap/macros.rs.html#84-118'>[src]</a></span></h1>
|
||||
</span><a id='src-13311' href='../src/clap/macros.rs.html#139-173'>[src]</a></span></h1>
|
||||
<pre class='rust macro'>
|
||||
<span class='macro'>macro_rules</span><span class='macro'>!</span> <span class='ident'>value_t</span> {
|
||||
(<span class='macro-nonterminal'>$</span><span class='macro-nonterminal'>m</span>:<span class='ident'>ident</span>.<span class='ident'>value_of</span>(<span class='macro-nonterminal'>$</span><span class='macro-nonterminal'>v</span>:<span class='ident'>expr</span>), <span class='macro-nonterminal'>$</span><span class='macro-nonterminal'>t</span>:<span class='ident'>ty</span>) <span class='op'>=></span> {
|
||||
|
|
|
@ -41,9 +41,9 @@
|
|||
</nav>
|
||||
|
||||
<section id='main' class="content macro">
|
||||
<h1 class='fqn'><span class='in-band'><a href='index.html'>clap</a>::<wbr><a class='macro' href=''>value_t_or_exit!</a></span><span class='out-of-band'><span id='render-detail'>
|
||||
<h1 class='fqn'><span class='in-band'><a href='index.html'>clap</a>::<wbr><a class='macro' href=''>value_t_or_exit!</a><wbr></span><span class='out-of-band'><span id='render-detail'>
|
||||
<a id="collapse-all" href="#">[-]</a> <a id="expand-all" href="#">[+]</a>
|
||||
</span><a id='src-10303' class='srclink' href='../src/clap/macros.rs.html#166-216'>[src]</a></span></h1>
|
||||
</span><a id='src-13312' href='../src/clap/macros.rs.html#221-271'>[src]</a></span></h1>
|
||||
<pre class='rust macro'>
|
||||
<span class='macro'>macro_rules</span><span class='macro'>!</span> <span class='ident'>value_t_or_exit</span> {
|
||||
(<span class='macro-nonterminal'>$</span><span class='macro-nonterminal'>m</span>:<span class='ident'>ident</span>.<span class='ident'>value_of</span>(<span class='macro-nonterminal'>$</span><span class='macro-nonterminal'>v</span>:<span class='ident'>expr</span>), <span class='macro-nonterminal'>$</span><span class='macro-nonterminal'>t</span>:<span class='ident'>ty</span>) <span class='op'>=></span> {
|
||||
|
|
|
@ -1 +1 @@
|
|||
initSidebarItems({"macro":[["arg_enum!","Convenience macro to generate more complete enums with variants to be used as a type when parsing arguments."],["crate_version!","Allows you pull the version for an from your Cargo.toml as MAJOR.MINOR.PATCH_PKGVERSION_PRE"],["simple_enum!","Convenience macro generated a simple enum with variants to be used as a type when parsing arguments."],["value_t!","Convenience macro getting a typed value `T` where `T` implements `std::str::FromStr` This macro returns a `Result<T,String>` which allows you as the developer to decide what you'd like to do on a failed parse. There are two types of errors, parse failures and those where the argument wasn't present (such as a non-required argument). "],["value_t_or_exit!","Convenience macro getting a typed value `T` where `T` implements `std::str::FromStr` This macro returns a `T` or `Vec<T>` or exits with a usage string upon failure. This removes some of the boiler plate to handle failures from value_t! above. "]],"struct":[["App","Used to create a representation of a command line program and all possible command line arguments for parsing at runtime."],["Arg","The abstract representation of a command line argument used by the consumer of the library. Used to set all the options and relationships that define a valid argument for the program."],["ArgMatches","Used to get information about the arguments that where supplied to the program at runtime by the user. To get a new instance of this struct you use `.get_matches()` of the `App` struct."],["SubCommand","The abstract representation of a command line subcommand used by the consumer of the library."]]});
|
||||
initSidebarItems({"struct":[["App","Used to create a representation of a command line program and all possible command line arguments for parsing at runtime."],["Arg","The abstract representation of a command line argument used by the consumer of the library. Used to set all the options and relationships that define a valid argument for the program."],["ArgGroup","ArgGroups are a family of related arguments and provide a few useful features for you. By placing arguments in a logical group, you can make easier requirement and exclusion rules. For instance, you can make an ArgGroup required, this means that one (and *only* one) argument from that group must be present. Using more than one argument from an ArgGroup causes a failure (graceful exit)."],["ArgMatches","Used to get information about the arguments that where supplied to the program at runtime by the user. To get a new instance of this struct you use `.get_matches()` of the `App` struct."],["SubCommand","The abstract representation of a command line subcommand used by the consumer of the library."]],"macro":[["arg_enum!","Convenience macro to generate more complete enums with variants to be used as a type when parsing arguments."],["crate_version!","Allows you pull the version for an from your Cargo.toml as MAJOR.MINOR.PATCH_PKGVERSION_PRE"],["simple_enum!","Convenience macro generated a simple enum with variants to be used as a type when parsing arguments."],["value_t!","Convenience macro getting a typed value `T` where `T` implements `std::str::FromStr` This macro returns a `Result<T,String>` which allows you as the developer to decide what you'd like to do on a failed parse. There are two types of errors, parse failures and those where the argument wasn't present (such as a non-required argument). "],["value_t_or_exit!","Convenience macro getting a typed value `T` where `T` implements `std::str::FromStr` This macro returns a `T` or `Vec<T>` or exits with a usage string upon failure. This removes some of the boiler plate to handle failures from value_t! above. "]]});
|
102
docs/clap/stability.html
Normal file
102
docs/clap/stability.html
Normal file
|
@ -0,0 +1,102 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="generator" content="rustdoc">
|
||||
<meta name="description" content="API stability overview for the Rust `clap` crate.">
|
||||
<meta name="keywords" content="rust, rustlang, rust-lang">
|
||||
|
||||
<title>clap - Stability dashboard</title>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../main.css">
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
<body class="rustdoc">
|
||||
<!--[if lte IE 8]>
|
||||
<div class="warning">
|
||||
This old browser is unsupported and will most likely display funky
|
||||
things.
|
||||
</div>
|
||||
<![endif]-->
|
||||
|
||||
|
||||
|
||||
<section class="sidebar">
|
||||
|
||||
<p class='location'></p><script>window.sidebarCurrent = {name: 'clap', ty: 'mod', relpath: '../'};</script>
|
||||
</section>
|
||||
|
||||
<nav class="sub">
|
||||
<form class="search-form js-only">
|
||||
<div class="search-container">
|
||||
<input class="search-input" name="search"
|
||||
autocomplete="off"
|
||||
placeholder="Click or press 'S' to search, '?' for more options..."
|
||||
type="search">
|
||||
</div>
|
||||
</form>
|
||||
</nav>
|
||||
|
||||
<section id='main' class="content mod"><h1 class='fqn'>Stability dashboard: crate <a class='mod' href='index.html'>clap</a></h1>
|
||||
This dashboard summarizes the stability levels for all of the public modules of
|
||||
the crate, according to the total number of items at each level in the module and
|
||||
its children (percentages total for clap):
|
||||
<blockquote>
|
||||
<a class='stability Stable'></a> stable (1%),<br/>
|
||||
<a class='stability Unstable'></a> unstable (0%),<br/>
|
||||
<a class='stability Deprecated'></a> deprecated (0%),<br/>
|
||||
<a class='stability Unmarked'></a> unmarked (98%)
|
||||
</blockquote>
|
||||
The counts do not include methods or trait
|
||||
implementations that are visible only through a re-exported type.<table><tr><td><a href='index.html'>clap</a></td><td class='summary-column'><span class='summary Stable' style='width: 1.4925%; display: inline-block'> </span><span class='summary Unstable' style='width: 0.0000%; display: inline-block'> </span><span class='summary Deprecated' style='width: 0.0000%; display: inline-block'> </span><span class='summary Unmarked' style='width: 98.5075%; display: inline-block'> </span></td></tr></table></section>
|
||||
<section id='search' class="content hidden"></section>
|
||||
|
||||
<section class="footer"></section>
|
||||
|
||||
<div id="help" class="hidden">
|
||||
<div class="shortcuts">
|
||||
<h1>Keyboard shortcuts</h1>
|
||||
<dl>
|
||||
<dt>?</dt>
|
||||
<dd>Show this help dialog</dd>
|
||||
<dt>S</dt>
|
||||
<dd>Focus the search field</dd>
|
||||
<dt>⇤</dt>
|
||||
<dd>Move up in search results</dd>
|
||||
<dt>⇥</dt>
|
||||
<dd>Move down in search results</dd>
|
||||
<dt>⏎</dt>
|
||||
<dd>Go to active search result</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="infos">
|
||||
<h1>Search tricks</h1>
|
||||
<p>
|
||||
Prefix searches with a type followed by a colon (e.g.
|
||||
<code>fn:</code>) to restrict the search to a given type.
|
||||
</p>
|
||||
<p>
|
||||
Accepted types are: <code>fn</code>, <code>mod</code>,
|
||||
<code>struct</code>, <code>enum</code>,
|
||||
<code>trait</code>, <code>typedef</code> (or
|
||||
<code>tdef</code>).
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
window.rootPath = "../";
|
||||
window.currentCrate = "clap";
|
||||
window.playgroundUrl = "";
|
||||
</script>
|
||||
<script src="../jquery.js"></script>
|
||||
<script src="../main.js"></script>
|
||||
|
||||
<script async src="../search-index.js"></script>
|
||||
</body>
|
||||
</html>
|
1
docs/clap/stability.json
Normal file
1
docs/clap/stability.json
Normal file
|
@ -0,0 +1 @@
|
|||
{"name":"clap","counts":{"deprecated":0,"unstable":0,"stable":1,"unmarked":66},"submodules":[]}
|
|
@ -41,9 +41,9 @@
|
|||
</nav>
|
||||
|
||||
<section id='main' class="content struct">
|
||||
<h1 class='fqn'><span class='in-band'>Struct <a href='index.html'>clap</a>::<wbr><a class='struct' href=''>App</a></span><span class='out-of-band'><span id='render-detail'>
|
||||
<h1 class='fqn'><span class='in-band'>Struct <a href='index.html'>clap</a>::<wbr><a class='struct' href=''>App</a><wbr></span><span class='out-of-band'><span id='render-detail'>
|
||||
<a id="collapse-all" href="#">[-]</a> <a id="expand-all" href="#">[+]</a>
|
||||
</span><a id='src-31' class='srclink' href='../src/clap/app.rs.html#41-74'>[src]</a></span></h1>
|
||||
</span><a id='src-34' href='../src/clap/app.rs.html#43-77'>[src]</a></span></h1>
|
||||
<pre class='rust struct'>pub struct App<'a, 'v, 'ab, 'u, 'h, 'ar> {
|
||||
// some fields omitted
|
||||
}</pre><div class='docblock'><p>Used to create a representation of a command line program and all possible command line
|
||||
|
@ -70,7 +70,7 @@ long as <code>.get_matches()</code> is last).</p>
|
|||
|
||||
<span class='comment'>// Your pogram logic starts here...</span>
|
||||
</pre>
|
||||
</div><h2 id='methods'>Methods</h2><h3 class='impl'><code>impl<'a, 'v, 'ab, 'u, 'h, 'ar> <a class='struct' href='../clap/struct.App.html' title='clap::App'>App</a><'a, 'v, 'ab, 'u, 'h, 'ar></code></h3><div class='impl-items'><h4 id='method.new' class='method'><code>fn <a href='#method.new' class='fnname'>new</a><'n>(n: &'n <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='struct' href='../clap/struct.App.html' title='clap::App'>App</a><'a, 'v, 'ab, 'u, 'h, 'ar></code></h4>
|
||||
</div><h2 id='methods'>Methods</h2><h3 class='impl'><a class='stability Unmarked' title='No stability level'></a><code>impl<'a, 'v, 'ab, 'u, 'h, 'ar> <a class='struct' href='../clap/struct.App.html' title='clap::App'>App</a><'a, 'v, 'ab, 'u, 'h, 'ar></code></h3><div class='impl-items'><h4 id='method.new' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.new' class='fnname'>new</a>(n: &'ar <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='struct' href='../clap/struct.App.html' title='clap::App'>App</a><'a, 'v, 'ab, 'u, 'h, 'ar></code></h4>
|
||||
<div class='docblock'><p>Creates a new instance of an application requiring a name (such as the binary). The name
|
||||
will be displayed to the user when they request to print version or help and usage
|
||||
information. The name should not contain spaces (hyphens '-' are ok).</p>
|
||||
|
@ -79,7 +79,7 @@ information. The name should not contain spaces (hyphens '-' are ok).</p
|
|||
href="#example">Example</a></h1><pre id='rust-example-rendered' class='rust '>
|
||||
<span class='kw'>let</span> <span class='ident'>prog</span> <span class='op'>=</span> <span class='ident'>App</span>::<span class='ident'>new</span>(<span class='string'>"myprog"</span>)
|
||||
</pre>
|
||||
</div><h4 id='method.author' class='method'><code>fn <a href='#method.author' class='fnname'>author</a>(self, a: &'a <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='struct' href='../clap/struct.App.html' title='clap::App'>App</a><'a, 'v, 'ab, 'u, 'h, 'ar></code></h4>
|
||||
</div><h4 id='method.author' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.author' class='fnname'>author</a>(self, a: &'a <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='struct' href='../clap/struct.App.html' title='clap::App'>App</a><'a, 'v, 'ab, 'u, 'h, 'ar></code></h4>
|
||||
<div class='docblock'><p>Sets a string of author(s) and will be displayed to the user when they request the version
|
||||
or help information.</p>
|
||||
|
||||
|
@ -87,7 +87,7 @@ or help information.</p>
|
|||
href="#example">Example</a></h1><pre id='rust-example-rendered' class='rust '>
|
||||
.<span class='ident'>author</span>(<span class='string'>"Kevin <kbknapp@gmail.com>"</span>)
|
||||
</pre>
|
||||
</div><h4 id='method.about' class='method'><code>fn <a href='#method.about' class='fnname'>about</a>(self, a: &'ab <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='struct' href='../clap/struct.App.html' title='clap::App'>App</a><'a, 'v, 'ab, 'u, 'h, 'ar></code></h4>
|
||||
</div><h4 id='method.about' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.about' class='fnname'>about</a>(self, a: &'ab <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='struct' href='../clap/struct.App.html' title='clap::App'>App</a><'a, 'v, 'ab, 'u, 'h, 'ar></code></h4>
|
||||
<div class='docblock'><p>Sets a string briefly describing what the program does and will be displayed when
|
||||
displaying help information.</p>
|
||||
|
||||
|
@ -95,7 +95,7 @@ displaying help information.</p>
|
|||
href="#example">Example</a></h1><pre id='rust-example-rendered' class='rust '>
|
||||
.<span class='ident'>about</span>(<span class='string'>"Does really amazing things to great people"</span>)
|
||||
</pre>
|
||||
</div><h4 id='method.after_help' class='method'><code>fn <a href='#method.after_help' class='fnname'>after_help</a>(self, h: &'h <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='struct' href='../clap/struct.App.html' title='clap::App'>App</a><'a, 'v, 'ab, 'u, 'h, 'ar></code></h4>
|
||||
</div><h4 id='method.after_help' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.after_help' class='fnname'>after_help</a>(self, h: &'h <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='struct' href='../clap/struct.App.html' title='clap::App'>App</a><'a, 'v, 'ab, 'u, 'h, 'ar></code></h4>
|
||||
<div class='docblock'><p>Adds additional help information to be displayed in addition to and directly after
|
||||
auto-generated help. This information is displayed <strong>after</strong> the auto-generated help
|
||||
information. This additional help is often used to describe how to use the arguments,
|
||||
|
@ -105,7 +105,7 @@ or caveats to be noted.</p>
|
|||
href="#example">Example</a></h1><pre id='rust-example-rendered' class='rust '>
|
||||
.<span class='ident'>after_help</span>(<span class='string'>"Does really amazing things to great people"</span>)
|
||||
</pre>
|
||||
</div><h4 id='method.version' class='method'><code>fn <a href='#method.version' class='fnname'>version</a>(self, v: &'v <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='struct' href='../clap/struct.App.html' title='clap::App'>App</a><'a, 'v, 'ab, 'u, 'h, 'ar></code></h4>
|
||||
</div><h4 id='method.version' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.version' class='fnname'>version</a>(self, v: &'v <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='struct' href='../clap/struct.App.html' title='clap::App'>App</a><'a, 'v, 'ab, 'u, 'h, 'ar></code></h4>
|
||||
<div class='docblock'><p>Sets a string of the version number to be displayed when displaying version or help
|
||||
information.</p>
|
||||
|
||||
|
@ -113,7 +113,7 @@ information.</p>
|
|||
href="#example">Example</a></h1><pre id='rust-example-rendered' class='rust '>
|
||||
.<span class='ident'>version</span>(<span class='string'>"v0.1.24"</span>)
|
||||
</pre>
|
||||
</div><h4 id='method.usage' class='method'><code>fn <a href='#method.usage' class='fnname'>usage</a>(self, u: &'u <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='struct' href='../clap/struct.App.html' title='clap::App'>App</a><'a, 'v, 'ab, 'u, 'h, 'ar></code></h4>
|
||||
</div><h4 id='method.usage' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.usage' class='fnname'>usage</a>(self, u: &'u <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='struct' href='../clap/struct.App.html' title='clap::App'>App</a><'a, 'v, 'ab, 'u, 'h, 'ar></code></h4>
|
||||
<div class='docblock'><p>Sets a custom usage string to over-ride the auto-generated usage string. Will be
|
||||
displayed to the user when errors are found in argument parsing, or when you call
|
||||
<code>ArgMatches::usage()</code></p>
|
||||
|
@ -129,7 +129,7 @@ showing the usage.</p>
|
|||
href="#example">Example</a></h1><pre id='rust-example-rendered' class='rust '>
|
||||
.<span class='ident'>usage</span>(<span class='string'>"myapp [-clDas] <some_file>"</span>)
|
||||
</pre>
|
||||
</div><h4 id='method.arg' class='method'><code>fn <a href='#method.arg' class='fnname'>arg</a>(self, a: <a class='struct' href='../clap/struct.Arg.html' title='clap::Arg'>Arg</a><'ar, 'ar, 'ar, 'ar, 'ar, 'ar>) -> <a class='struct' href='../clap/struct.App.html' title='clap::App'>App</a><'a, 'v, 'ab, 'u, 'h, 'ar></code></h4>
|
||||
</div><h4 id='method.arg' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.arg' class='fnname'>arg</a>(self, a: <a class='struct' href='../clap/struct.Arg.html' title='clap::Arg'>Arg</a><'ar, 'ar, 'ar, 'ar, 'ar, 'ar>) -> <a class='struct' href='../clap/struct.App.html' title='clap::App'>App</a><'a, 'v, 'ab, 'u, 'h, 'ar></code></h4>
|
||||
<div class='docblock'><p>Adds an argument to the list of valid possibilties manually. This method allows you full
|
||||
control over the arguments settings and options (as well as dynamic generation). It also
|
||||
allows you specify several more advanced configuration options such as relational rules
|
||||
|
@ -148,7 +148,7 @@ control over the advanced configuration options.</p>
|
|||
<span class='comment'>// Adding a single "option" argument with a short, a long, and help text using the less verbose Arg::from_usage()</span>
|
||||
.<span class='ident'>arg</span>(<span class='ident'>Arg</span>::<span class='ident'>from_usage</span>(<span class='string'>"-c --config=[CONFIG] 'Optionally sets a configuration file to use'"</span>))
|
||||
</pre>
|
||||
</div><h4 id='method.args' class='method'><code>fn <a href='#method.args' class='fnname'>args</a>(self, args: <a class='struct' href='http://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a><<a class='struct' href='../clap/struct.Arg.html' title='clap::Arg'>Arg</a><'ar, 'ar, 'ar, 'ar, 'ar, 'ar>>) -> <a class='struct' href='../clap/struct.App.html' title='clap::App'>App</a><'a, 'v, 'ab, 'u, 'h, 'ar></code></h4>
|
||||
</div><h4 id='method.args' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.args' class='fnname'>args</a>(self, args: <a class='struct' href='http://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a><<a class='struct' href='../clap/struct.Arg.html' title='clap::Arg'>Arg</a><'ar, 'ar, 'ar, 'ar, 'ar, 'ar>>) -> <a class='struct' href='../clap/struct.App.html' title='clap::App'>App</a><'a, 'v, 'ab, 'u, 'h, 'ar></code></h4>
|
||||
<div class='docblock'><p>Adds multiple arguments to the list of valid possibilties by iterating over a Vec of Args</p>
|
||||
|
||||
<h1 id="example" class='section-header'><a
|
||||
|
@ -156,7 +156,7 @@ control over the advanced configuration options.</p>
|
|||
.<span class='ident'>args</span>( <span class='macro'>vec</span><span class='macro'>!</span>[<span class='ident'>Arg</span>::<span class='ident'>from_usage</span>(<span class='string'>"[debug] -d 'turns on debugging info"</span>),
|
||||
<span class='ident'>Arg</span>::<span class='ident'>with_name</span>(<span class='string'>"input"</span>).<span class='ident'>index</span>(<span class='number'>1</span>).<span class='ident'>help</span>(<span class='string'>"the input file to use"</span>)])
|
||||
</pre>
|
||||
</div><h4 id='method.arg_from_usage' class='method'><code>fn <a href='#method.arg_from_usage' class='fnname'>arg_from_usage</a>(self, usage: &'ar <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='struct' href='../clap/struct.App.html' title='clap::App'>App</a><'a, 'v, 'ab, 'u, 'h, 'ar></code></h4>
|
||||
</div><h4 id='method.arg_from_usage' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.arg_from_usage' class='fnname'>arg_from_usage</a>(self, usage: &'ar <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='struct' href='../clap/struct.App.html' title='clap::App'>App</a><'a, 'v, 'ab, 'u, 'h, 'ar></code></h4>
|
||||
<div class='docblock'><p>A convienience method for adding a single basic argument (one without advanced relational rules)
|
||||
from a usage type string. The string used follows the same rules and syntax as <code>Arg::from_usage()</code></p>
|
||||
|
||||
|
@ -167,7 +167,7 @@ from a usage type string. The string used follows the same rules and syntax as <
|
|||
href="#example">Example</a></h1><pre id='rust-example-rendered' class='rust '>
|
||||
.<span class='ident'>arg_from_usage</span>(<span class='string'>"-c --conf=<config> 'Sets a configuration file to use'"</span>)
|
||||
</pre>
|
||||
</div><h4 id='method.args_from_usage' class='method'><code>fn <a href='#method.args_from_usage' class='fnname'>args_from_usage</a>(self, usage: &'ar <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='struct' href='../clap/struct.App.html' title='clap::App'>App</a><'a, 'v, 'ab, 'u, 'h, 'ar></code></h4>
|
||||
</div><h4 id='method.args_from_usage' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.args_from_usage' class='fnname'>args_from_usage</a>(self, usage: &'ar <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='struct' href='../clap/struct.App.html' title='clap::App'>App</a><'a, 'v, 'ab, 'u, 'h, 'ar></code></h4>
|
||||
<div class='docblock'><p>Adds multiple arguments at once from a usage string, one per line. See <code>Arg::from_usage()</code>
|
||||
for details on the syntax and rules supported.</p>
|
||||
|
||||
|
@ -182,7 +182,65 @@ greatly enhanced, especially if you don't need any of the more advanced conf
|
|||
[debug]... -d 'Sets the debugging level'
|
||||
<input> 'The input file to use'"</span>)
|
||||
</pre>
|
||||
</div><h4 id='method.subcommand' class='method'><code>fn <a href='#method.subcommand' class='fnname'>subcommand</a>(self, subcmd: <a class='struct' href='../clap/struct.App.html' title='clap::App'>App</a><'a, 'v, 'ab, 'u, 'h, 'ar>) -> <a class='struct' href='../clap/struct.App.html' title='clap::App'>App</a><'a, 'v, 'ab, 'u, 'h, 'ar></code></h4>
|
||||
</div><h4 id='method.arg_group' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.arg_group' class='fnname'>arg_group</a>(self, group: <a class='struct' href='../clap/struct.ArgGroup.html' title='clap::ArgGroup'>ArgGroup</a><'ar, 'ar>) -> <a class='struct' href='../clap/struct.App.html' title='clap::App'>App</a><'a, 'v, 'ab, 'u, 'h, 'ar></code></h4>
|
||||
<div class='docblock'><p>Adds an ArgGroup to the application. ArgGroups are a family of related arguments. By
|
||||
placing them in a logical group, you make easier requirement and exclusion rules. For
|
||||
instance, you can make an ArgGroup required, this means that one (and <em>only</em> one) argument
|
||||
from that group must be present. Using more than one argument from an ArgGroup causes a
|
||||
failure (graceful exit).</p>
|
||||
|
||||
<p>You can also do things such as name an ArgGroup as a confliction, meaning any of the
|
||||
arguments that belong to that group will cause a failure if present.</p>
|
||||
|
||||
<p>Perhaps the most common use of ArgGroups is to require one and <em>only</em> one argument to be
|
||||
present out of a given set. For example, lets say that you were building an application
|
||||
where one could set a given version number by supplying a string using an option argument,
|
||||
such as <code>--set-ver v1.2.3</code>, you also wanted to support automatically using a previous
|
||||
version numer and simply incrementing one of the three numbers, so you create three flags
|
||||
<code>--major</code>, <code>--minor</code>, and <code>--patch</code>. All of these arguments shouldn't be used at one time
|
||||
but perhaps you want to specify that <em>at least one</em> of them is used. You can create a
|
||||
group</p>
|
||||
|
||||
<h1 id="example" class='section-header'><a
|
||||
href="#example">Example</a></h1><pre id='rust-example-rendered' class='rust '>
|
||||
.<span class='ident'>args_from_usage</span>(<span class='string'>"--set-ver [ver] 'set the version manually'
|
||||
--major 'auto increase major'
|
||||
--minor 'auto increase minor'
|
||||
--patch 'auto increase patch"</span>)
|
||||
.<span class='ident'>arg_group</span>(<span class='ident'>ArgGroup</span>::<span class='ident'>with_name</span>(<span class='string'>"vers"</span>)
|
||||
.<span class='ident'>add_all</span>(<span class='macro'>vec</span><span class='macro'>!</span>[<span class='string'>"ver"</span>, <span class='string'>"major"</span>, <span class='string'>"minor"</span>,<span class='string'>"patch"</span>])
|
||||
.<span class='ident'>required</span>(<span class='boolval'>true</span>))
|
||||
</pre>
|
||||
</div><h4 id='method.arg_groups' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.arg_groups' class='fnname'>arg_groups</a>(self, groups: <a class='struct' href='http://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a><<a class='struct' href='../clap/struct.ArgGroup.html' title='clap::ArgGroup'>ArgGroup</a><'ar, 'ar>>) -> <a class='struct' href='../clap/struct.App.html' title='clap::App'>App</a><'a, 'v, 'ab, 'u, 'h, 'ar></code></h4>
|
||||
<div class='docblock'><p>Adds a ArgGroups to the application. ArgGroups are a family of related arguments. By
|
||||
placing them in a logical group, you make easier requirement and exclusion rules. For
|
||||
instance, you can make an ArgGroup required, this means that one (and <em>only</em> one) argument
|
||||
from that group must be present. Using more than one argument from an ArgGroup causes a
|
||||
failure (graceful exit).</p>
|
||||
|
||||
<p>You can also do things such as name an ArgGroup as a confliction, meaning any of the
|
||||
arguments that belong to that group will cause a failure if present.</p>
|
||||
|
||||
<p>Perhaps the most common use of ArgGroups is to require one and <em>only</em> one argument to be
|
||||
present out of a given set. For example, lets say that you were building an application
|
||||
where one could set a given version number by supplying a string using an option argument,
|
||||
such as <code>--set-ver v1.2.3</code>, you also wanted to support automatically using a previous
|
||||
version numer and simply incrementing one of the three numbers, so you create three flags
|
||||
<code>--major</code>, <code>--minor</code>, and <code>--patch</code>. All of these arguments shouldn't be used at one time
|
||||
but perhaps you want to specify that <em>at least one</em> of them is used. You can create a
|
||||
group</p>
|
||||
|
||||
<h1 id="example" class='section-header'><a
|
||||
href="#example">Example</a></h1><pre id='rust-example-rendered' class='rust '>
|
||||
.<span class='ident'>args_from_usage</span>(<span class='string'>"--set-ver [ver] 'set the version manually'
|
||||
--major 'auto increase major'
|
||||
--minor 'auto increase minor'
|
||||
--patch 'auto increase patch"</span>)
|
||||
.<span class='ident'>arg_group</span>(<span class='ident'>ArgGroup</span>::<span class='ident'>with_name</span>(<span class='string'>"vers"</span>)
|
||||
.<span class='ident'>add_all</span>(<span class='macro'>vec</span><span class='macro'>!</span>[<span class='string'>"ver"</span>, <span class='string'>"major"</span>, <span class='string'>"minor"</span>,<span class='string'>"patch"</span>])
|
||||
.<span class='ident'>required</span>(<span class='boolval'>true</span>))
|
||||
</pre>
|
||||
</div><h4 id='method.subcommand' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.subcommand' class='fnname'>subcommand</a>(self, subcmd: <a class='struct' href='../clap/struct.App.html' title='clap::App'>App</a><'a, 'v, 'ab, 'u, 'h, 'ar>) -> <a class='struct' href='../clap/struct.App.html' title='clap::App'>App</a><'a, 'v, 'ab, 'u, 'h, 'ar></code></h4>
|
||||
<div class='docblock'><p>Adds a subcommand to the list of valid possibilties. Subcommands are effectively sub apps,
|
||||
because they can contain their own arguments, subcommands, version, usage, etc. They also
|
||||
function just like apps, in that they get their own auto generated help, version, and usage.</p>
|
||||
|
@ -194,7 +252,7 @@ function just like apps, in that they get their own auto generated help, version
|
|||
.<span class='ident'>arg_from_usage</span>(<span class='string'>"<config> 'Required configuration file to use'"</span>))
|
||||
<span class='comment'>// Additional subcommand configuration goes here, such as other arguments...</span>
|
||||
</pre>
|
||||
</div><h4 id='method.subcommands' class='method'><code>fn <a href='#method.subcommands' class='fnname'>subcommands</a>(self, subcmds: <a class='struct' href='http://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a><<a class='struct' href='../clap/struct.App.html' title='clap::App'>App</a><'a, 'v, 'ab, 'u, 'h, 'ar>>) -> <a class='struct' href='../clap/struct.App.html' title='clap::App'>App</a><'a, 'v, 'ab, 'u, 'h, 'ar></code></h4>
|
||||
</div><h4 id='method.subcommands' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.subcommands' class='fnname'>subcommands</a>(self, subcmds: <a class='struct' href='http://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a><<a class='struct' href='../clap/struct.App.html' title='clap::App'>App</a><'a, 'v, 'ab, 'u, 'h, 'ar>>) -> <a class='struct' href='../clap/struct.App.html' title='clap::App'>App</a><'a, 'v, 'ab, 'u, 'h, 'ar></code></h4>
|
||||
<div class='docblock'><p>Adds multiple subcommands to the list of valid possibilties by iterating over a Vec of <code>SubCommand</code>s</p>
|
||||
|
||||
<h1 id="example" class='section-header'><a
|
||||
|
@ -204,7 +262,7 @@ function just like apps, in that they get their own auto generated help, version
|
|||
.<span class='ident'>arg</span>(<span class='ident'>Arg</span>::<span class='ident'>with_name</span>(<span class='string'>"config_file"</span>).<span class='ident'>index</span>(<span class='number'>1</span>)),
|
||||
<span class='ident'>SubCommand</span>::<span class='ident'>new</span>(<span class='string'>"debug"</span>).<span class='ident'>about</span>(<span class='string'>"Controls debug functionality"</span>)])
|
||||
</pre>
|
||||
</div><h4 id='method.get_matches' class='method'><code>fn <a href='#method.get_matches' class='fnname'>get_matches</a>(self) -> <a class='struct' href='../clap/struct.ArgMatches.html' title='clap::ArgMatches'>ArgMatches</a><'ar></code></h4>
|
||||
</div><h4 id='method.get_matches' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.get_matches' class='fnname'>get_matches</a>(self) -> <a class='struct' href='../clap/struct.ArgMatches.html' title='clap::ArgMatches'>ArgMatches</a><'ar, 'ar></code></h4>
|
||||
</div></section>
|
||||
<section id='search' class="content hidden"></section>
|
||||
|
||||
|
|
|
@ -41,10 +41,10 @@
|
|||
</nav>
|
||||
|
||||
<section id='main' class="content struct">
|
||||
<h1 class='fqn'><span class='in-band'>Struct <a href='index.html'>clap</a>::<wbr><a class='struct' href=''>Arg</a></span><span class='out-of-band'><span id='render-detail'>
|
||||
<h1 class='fqn'><span class='in-band'>Struct <a href='index.html'>clap</a>::<wbr><a class='struct' href=''>Arg</a><wbr></span><span class='out-of-band'><span id='render-detail'>
|
||||
<a id="collapse-all" href="#">[-]</a> <a id="expand-all" href="#">[+]</a>
|
||||
</span><a id='src-8397' class='srclink' href='../src/clap/args/arg.rs.html#31-76'>[src]</a></span></h1>
|
||||
<pre class='rust struct'>pub struct Arg<'n, 'l, 'h, 'b, 'p, 'r> {
|
||||
</span><a id='src-10470' href='../src/clap/args/arg.rs.html#31-79'>[src]</a></span></h1>
|
||||
<pre class='rust struct'>pub struct Arg<'n, 'l, 'h, 'g, 'p, 'r> {
|
||||
// some fields omitted
|
||||
}</pre><div class='docblock'><p>The abstract representation of a command line argument used by the consumer of the library.
|
||||
Used to set all the options and relationships that define a valid argument for the program.</p>
|
||||
|
@ -68,7 +68,7 @@ of the two methods to achieve the best of both worlds.</p>
|
|||
<span class='comment'>// Using a usage string (setting a similar argument to the one above)</span>
|
||||
<span class='ident'>Arg</span>::<span class='ident'>from_usage</span>(<span class='string'>"-i --input=[input] 'Provides an input file to the program'"</span>)
|
||||
</pre>
|
||||
</div><h2 id='methods'>Methods</h2><h3 class='impl'><code>impl<'n, 'l, 'h, 'b, 'p, 'r> <a class='struct' href='../clap/struct.Arg.html' title='clap::Arg'>Arg</a><'n, 'l, 'h, 'b, 'p, 'r></code></h3><div class='impl-items'><h4 id='method.new' class='method'><code>fn <a href='#method.new' class='fnname'>new</a>(n: &'n <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='struct' href='../clap/struct.Arg.html' title='clap::Arg'>Arg</a><'n, 'l, 'h, 'b, 'p, 'r></code></h4>
|
||||
</div><h2 id='methods'>Methods</h2><h3 class='impl'><a class='stability Unmarked' title='No stability level'></a><code>impl<'n, 'l, 'h, 'g, 'p, 'r> <a class='struct' href='../clap/struct.Arg.html' title='clap::Arg'>Arg</a><'n, 'l, 'h, 'g, 'p, 'r></code></h3><div class='impl-items'><h4 id='method.new' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.new' class='fnname'>new</a>(n: &'n <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='struct' href='../clap/struct.Arg.html' title='clap::Arg'>Arg</a><'n, 'l, 'h, 'g, 'p, 'r></code></h4>
|
||||
<div class='docblock'><p>Creates a new instace of <code>Arg</code> using a unique string name.
|
||||
The name will be used by the library consumer to get information about
|
||||
whether or not the argument was used at runtime. </p>
|
||||
|
@ -84,7 +84,7 @@ Rust APIs</p>
|
|||
href="#example">Example</a></h1><pre id='rust-example-rendered' class='rust '>
|
||||
<span class='ident'>Arg</span>::<span class='ident'>new</span>(<span class='string'>"conifg"</span>)
|
||||
</pre>
|
||||
</div><h4 id='method.with_name' class='method'><code>fn <a href='#method.with_name' class='fnname'>with_name</a>(n: &'n <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='struct' href='../clap/struct.Arg.html' title='clap::Arg'>Arg</a><'n, 'l, 'h, 'b, 'p, 'r></code></h4>
|
||||
</div><h4 id='method.with_name' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.with_name' class='fnname'>with_name</a>(n: &'n <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='struct' href='../clap/struct.Arg.html' title='clap::Arg'>Arg</a><'n, 'l, 'h, 'g, 'p, 'r></code></h4>
|
||||
<div class='docblock'><p>Creates a new instace of <code>Arg</code> using a unique string name.
|
||||
The name will be used by the library consumer to get information about
|
||||
whether or not the argument was used at runtime. </p>
|
||||
|
@ -97,7 +97,7 @@ be displayed when the user prints the usage/help information of the program.</p>
|
|||
href="#example">Example</a></h1><pre id='rust-example-rendered' class='rust '>
|
||||
<span class='ident'>Arg</span>::<span class='ident'>with_name</span>(<span class='string'>"conifg"</span>)
|
||||
</pre>
|
||||
</div><h4 id='method.from_usage' class='method'><code>fn <a href='#method.from_usage' class='fnname'>from_usage</a>(u: &'n <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='struct' href='../clap/struct.Arg.html' title='clap::Arg'>Arg</a><'n, 'n, 'n, 'b, 'p, 'r></code></h4>
|
||||
</div><h4 id='method.from_usage' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.from_usage' class='fnname'>from_usage</a>(u: &'n <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='struct' href='../clap/struct.Arg.html' title='clap::Arg'>Arg</a><'n, 'n, 'n, 'g, 'p, 'r></code></h4>
|
||||
<div class='docblock'><p>Creates a new instace of <code>Arg</code> from a usage string. Allows creation of basic settings
|
||||
for Arg (i.e. everything except relational rules). The syntax is flexible, but there are
|
||||
some rules to follow.</p>
|
||||
|
@ -144,7 +144,7 @@ specify one) i.e. all arguments without a <code>short</code> or <code>long</code
|
|||
<span class='ident'>Arg</span>::<span class='ident'>from_usage</span>(<span class='string'>"<input> 'the input file to use'"</span>)
|
||||
])
|
||||
</pre>
|
||||
</div><h4 id='method.short' class='method'><code>fn <a href='#method.short' class='fnname'>short</a>(self, s: &<a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='struct' href='../clap/struct.Arg.html' title='clap::Arg'>Arg</a><'n, 'l, 'h, 'b, 'p, 'r></code></h4>
|
||||
</div><h4 id='method.short' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.short' class='fnname'>short</a>(self, s: &<a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='struct' href='../clap/struct.Arg.html' title='clap::Arg'>Arg</a><'n, 'l, 'h, 'g, 'p, 'r></code></h4>
|
||||
<div class='docblock'><p>Sets the short version of the argument without the preceding <code>-</code>.</p>
|
||||
|
||||
<p>By default <code>clap</code> automatically assigns <code>v</code> and <code>h</code> to display version and help information
|
||||
|
@ -158,7 +158,7 @@ non <code>-</code> chacter will be used as the <code>short</code> version</p>
|
|||
href="#example">Example</a></h1><pre id='rust-example-rendered' class='rust '>
|
||||
.<span class='ident'>short</span>(<span class='string'>"c"</span>)
|
||||
</pre>
|
||||
</div><h4 id='method.long' class='method'><code>fn <a href='#method.long' class='fnname'>long</a>(self, l: &'l <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='struct' href='../clap/struct.Arg.html' title='clap::Arg'>Arg</a><'n, 'l, 'h, 'b, 'p, 'r></code></h4>
|
||||
</div><h4 id='method.long' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.long' class='fnname'>long</a>(self, l: &'l <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='struct' href='../clap/struct.Arg.html' title='clap::Arg'>Arg</a><'n, 'l, 'h, 'g, 'p, 'r></code></h4>
|
||||
<div class='docblock'><p>Sets the long version of the argument without the preceding <code>--</code>.</p>
|
||||
|
||||
<p>By default <code>clap</code> automatically assigns <code>version</code> and <code>help</code> to display version and help information
|
||||
|
@ -172,7 +172,7 @@ so manually.</p>
|
|||
href="#example">Example</a></h1><pre id='rust-example-rendered' class='rust '>
|
||||
.<span class='ident'>long</span>(<span class='string'>"config"</span>)
|
||||
</pre>
|
||||
</div><h4 id='method.help' class='method'><code>fn <a href='#method.help' class='fnname'>help</a>(self, h: &'h <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='struct' href='../clap/struct.Arg.html' title='clap::Arg'>Arg</a><'n, 'l, 'h, 'b, 'p, 'r></code></h4>
|
||||
</div><h4 id='method.help' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.help' class='fnname'>help</a>(self, h: &'h <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='struct' href='../clap/struct.Arg.html' title='clap::Arg'>Arg</a><'n, 'l, 'h, 'g, 'p, 'r></code></h4>
|
||||
<div class='docblock'><p>Sets the help text of the argument that will be displayed to the user
|
||||
when they print the usage/help information. </p>
|
||||
|
||||
|
@ -180,7 +180,7 @@ when they print the usage/help information. </p>
|
|||
href="#example">Example</a></h1><pre id='rust-example-rendered' class='rust '>
|
||||
.<span class='ident'>help</span>(<span class='string'>"The config file used by the myprog"</span>)
|
||||
</pre>
|
||||
</div><h4 id='method.required' class='method'><code>fn <a href='#method.required' class='fnname'>required</a>(self, r: <a href='http://doc.rust-lang.org/nightly/std/primitive.bool.html'>bool</a>) -> <a class='struct' href='../clap/struct.Arg.html' title='clap::Arg'>Arg</a><'n, 'l, 'h, 'b, 'p, 'r></code></h4>
|
||||
</div><h4 id='method.required' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.required' class='fnname'>required</a>(self, r: <a href='http://doc.rust-lang.org/nightly/std/primitive.bool.html'>bool</a>) -> <a class='struct' href='../clap/struct.Arg.html' title='clap::Arg'>Arg</a><'n, 'l, 'h, 'g, 'p, 'r></code></h4>
|
||||
<div class='docblock'><p>Sets whether or not the argument is required by default. Required by
|
||||
default means it is required, when no other mutually exlusive rules have
|
||||
been evaluated. Mutually exclusive rules take precedence over being required
|
||||
|
@ -194,7 +194,36 @@ when they print the usage/help information. </p>
|
|||
href="#example">Example</a></h1><pre id='rust-example-rendered' class='rust '>
|
||||
.<span class='ident'>required</span>(<span class='boolval'>true</span>)
|
||||
</pre>
|
||||
</div><h4 id='method.mutually_excludes' class='method'><code>fn <a href='#method.mutually_excludes' class='fnname'>mutually_excludes</a>(self, name: &'b <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='struct' href='../clap/struct.Arg.html' title='clap::Arg'>Arg</a><'n, 'l, 'h, 'b, 'p, 'r></code></h4>
|
||||
</div><h4 id='method.mutually_excludes' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.mutually_excludes' class='fnname'>mutually_excludes</a>(self, name: &'r <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='struct' href='../clap/struct.Arg.html' title='clap::Arg'>Arg</a><'n, 'l, 'h, 'g, 'p, 'r></code></h4>
|
||||
<div class='docblock'><p>Sets a mutually exclusive argument by name. I.e. when using this argument,
|
||||
the following argument can't be present.</p>
|
||||
|
||||
<p><strong>NOTE:</strong> Mutually exclusive rules take precedence over being required
|
||||
by default. Mutually exclusive rules only need to be set for one of the two
|
||||
arguments, they do not need to be set for each.</p>
|
||||
|
||||
<p><strong>NOTE:</strong> This method is deprecated in favor of <code>conflicts_with()</code></p>
|
||||
|
||||
<h1 id="example" class='section-header'><a
|
||||
href="#example">Example</a></h1><pre id='rust-example-rendered' class='rust '>
|
||||
.<span class='ident'>mutually_excludes</span>(<span class='string'>"debug"</span>)
|
||||
</pre>
|
||||
</div><h4 id='method.mutually_excludes_all' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.mutually_excludes_all' class='fnname'>mutually_excludes_all</a>(self, names: <a class='struct' href='http://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a><&'r <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>>) -> <a class='struct' href='../clap/struct.Arg.html' title='clap::Arg'>Arg</a><'n, 'l, 'h, 'g, 'p, 'r></code></h4>
|
||||
<div class='docblock'><p>Sets a mutually exclusive arguments by names. I.e. when using this argument,
|
||||
the following argument can't be present.</p>
|
||||
|
||||
<p><strong>NOTE:</strong> Mutually exclusive rules take precedence over being required
|
||||
by default. Mutually exclusive rules only need to be set for one of the two
|
||||
arguments, they do not need to be set for each.</p>
|
||||
|
||||
<p><strong>NOTE:</strong> This method is deprecated in favor of <code>conflicts_with_all()</code></p>
|
||||
|
||||
<h1 id="example" class='section-header'><a
|
||||
href="#example">Example</a></h1><pre id='rust-example-rendered' class='rust '>
|
||||
.<span class='ident'>mutually_excludes_all</span>(
|
||||
<span class='macro'>vec</span><span class='macro'>!</span>[<span class='string'>"debug"</span>, <span class='string'>"input"</span>])
|
||||
</pre>
|
||||
</div><h4 id='method.conflicts_with' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.conflicts_with' class='fnname'>conflicts_with</a>(self, name: &'r <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='struct' href='../clap/struct.Arg.html' title='clap::Arg'>Arg</a><'n, 'l, 'h, 'g, 'p, 'r></code></h4>
|
||||
<div class='docblock'><p>Sets a mutually exclusive argument by name. I.e. when using this argument,
|
||||
the following argument can't be present.</p>
|
||||
|
||||
|
@ -204,10 +233,10 @@ arguments, they do not need to be set for each.</p>
|
|||
|
||||
<h1 id="example" class='section-header'><a
|
||||
href="#example">Example</a></h1><pre id='rust-example-rendered' class='rust '>
|
||||
.<span class='ident'>mutually_excludes</span>(<span class='string'>"debug"</span>)
|
||||
.<span class='ident'>conflicts_with</span>(<span class='string'>"debug"</span>)
|
||||
</pre>
|
||||
</div><h4 id='method.mutually_excludes_all' class='method'><code>fn <a href='#method.mutually_excludes_all' class='fnname'>mutually_excludes_all</a>(self, names: <a class='struct' href='http://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a><&'b <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>>) -> <a class='struct' href='../clap/struct.Arg.html' title='clap::Arg'>Arg</a><'n, 'l, 'h, 'b, 'p, 'r></code></h4>
|
||||
<div class='docblock'><p>Sets a mutually exclusive arguments by names. I.e. when using this argument,
|
||||
</div><h4 id='method.conflicts_with_all' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.conflicts_with_all' class='fnname'>conflicts_with_all</a>(self, names: <a class='struct' href='http://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a><&'r <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>>) -> <a class='struct' href='../clap/struct.Arg.html' title='clap::Arg'>Arg</a><'n, 'l, 'h, 'g, 'p, 'r></code></h4>
|
||||
<div class='docblock'><p>Sets mutually exclusive arguments by names. I.e. when using this argument,
|
||||
the following argument can't be present.</p>
|
||||
|
||||
<p><strong>NOTE:</strong> Mutually exclusive rules take precedence over being required
|
||||
|
@ -216,10 +245,10 @@ arguments, they do not need to be set for each.</p>
|
|||
|
||||
<h1 id="example" class='section-header'><a
|
||||
href="#example">Example</a></h1><pre id='rust-example-rendered' class='rust '>
|
||||
.<span class='ident'>mutually_excludes_all</span>(
|
||||
.<span class='ident'>conflicts_with_all</span>(
|
||||
<span class='macro'>vec</span><span class='macro'>!</span>[<span class='string'>"debug"</span>, <span class='string'>"input"</span>])
|
||||
</pre>
|
||||
</div><h4 id='method.requires' class='method'><code>fn <a href='#method.requires' class='fnname'>requires</a>(self, name: &'r <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='struct' href='../clap/struct.Arg.html' title='clap::Arg'>Arg</a><'n, 'l, 'h, 'b, 'p, 'r></code></h4>
|
||||
</div><h4 id='method.requires' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.requires' class='fnname'>requires</a>(self, name: &'r <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='struct' href='../clap/struct.Arg.html' title='clap::Arg'>Arg</a><'n, 'l, 'h, 'g, 'p, 'r></code></h4>
|
||||
<div class='docblock'><p>Sets an argument by name that is required when this one is presnet I.e. when
|
||||
using this argument, the following argument <em>must</em> be present.</p>
|
||||
|
||||
|
@ -229,7 +258,7 @@ using this argument, the following argument <em>must</em> be present.</p>
|
|||
href="#example">Example</a></h1><pre id='rust-example-rendered' class='rust '>
|
||||
.<span class='ident'>requires</span>(<span class='string'>"debug"</span>)
|
||||
</pre>
|
||||
</div><h4 id='method.requires_all' class='method'><code>fn <a href='#method.requires_all' class='fnname'>requires_all</a>(self, names: <a class='struct' href='http://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a><&'r <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>>) -> <a class='struct' href='../clap/struct.Arg.html' title='clap::Arg'>Arg</a><'n, 'l, 'h, 'b, 'p, 'r></code></h4>
|
||||
</div><h4 id='method.requires_all' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.requires_all' class='fnname'>requires_all</a>(self, names: <a class='struct' href='http://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a><&'r <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>>) -> <a class='struct' href='../clap/struct.Arg.html' title='clap::Arg'>Arg</a><'n, 'l, 'h, 'g, 'p, 'r></code></h4>
|
||||
<div class='docblock'><p>Sets arguments by names that are required when this one is presnet I.e. when
|
||||
using this argument, the following arguments <em>must</em> be present.</p>
|
||||
|
||||
|
@ -241,7 +270,7 @@ by default. </p>
|
|||
.<span class='ident'>requires_all</span>(
|
||||
<span class='macro'>vec</span><span class='macro'>!</span>[<span class='string'>"debug"</span>, <span class='string'>"input"</span>])
|
||||
</pre>
|
||||
</div><h4 id='method.takes_value' class='method'><code>fn <a href='#method.takes_value' class='fnname'>takes_value</a>(self, tv: <a href='http://doc.rust-lang.org/nightly/std/primitive.bool.html'>bool</a>) -> <a class='struct' href='../clap/struct.Arg.html' title='clap::Arg'>Arg</a><'n, 'l, 'h, 'b, 'p, 'r></code></h4>
|
||||
</div><h4 id='method.takes_value' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.takes_value' class='fnname'>takes_value</a>(self, tv: <a href='http://doc.rust-lang.org/nightly/std/primitive.bool.html'>bool</a>) -> <a class='struct' href='../clap/struct.Arg.html' title='clap::Arg'>Arg</a><'n, 'l, 'h, 'g, 'p, 'r></code></h4>
|
||||
<div class='docblock'><p>Specifies that the argument takes an additional value at run time.</p>
|
||||
|
||||
<p><strong>NOTE:</strong> When setting this to <code>true</code> the <code>name</code> of the argument
|
||||
|
@ -251,7 +280,7 @@ will be used when printing the help/usage information to the user. </p>
|
|||
href="#example">Example</a></h1><pre id='rust-example-rendered' class='rust '>
|
||||
.<span class='ident'>takes_value</span>(<span class='boolval'>true</span>)
|
||||
</pre>
|
||||
</div><h4 id='method.index' class='method'><code>fn <a href='#method.index' class='fnname'>index</a>(self, idx: <a href='http://doc.rust-lang.org/nightly/std/primitive.u8.html'>u8</a>) -> <a class='struct' href='../clap/struct.Arg.html' title='clap::Arg'>Arg</a><'n, 'l, 'h, 'b, 'p, 'r></code></h4>
|
||||
</div><h4 id='method.index' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.index' class='fnname'>index</a>(self, idx: <a href='http://doc.rust-lang.org/nightly/std/primitive.u8.html'>u8</a>) -> <a class='struct' href='../clap/struct.Arg.html' title='clap::Arg'>Arg</a><'n, 'l, 'h, 'g, 'p, 'r></code></h4>
|
||||
<div class='docblock'><p>Specifies the index of a positional argument starting at 1.</p>
|
||||
|
||||
<p><strong>NOTE:</strong> When setting this, any <code>short</code> or <code>long</code> values you set
|
||||
|
@ -263,7 +292,7 @@ to the user. </p>
|
|||
href="#example">Example</a></h1><pre id='rust-example-rendered' class='rust '>
|
||||
.<span class='ident'>index</span>(<span class='number'>1</span>)
|
||||
</pre>
|
||||
</div><h4 id='method.multiple' class='method'><code>fn <a href='#method.multiple' class='fnname'>multiple</a>(self, multi: <a href='http://doc.rust-lang.org/nightly/std/primitive.bool.html'>bool</a>) -> <a class='struct' href='../clap/struct.Arg.html' title='clap::Arg'>Arg</a><'n, 'l, 'h, 'b, 'p, 'r></code></h4>
|
||||
</div><h4 id='method.multiple' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.multiple' class='fnname'>multiple</a>(self, multi: <a href='http://doc.rust-lang.org/nightly/std/primitive.bool.html'>bool</a>) -> <a class='struct' href='../clap/struct.Arg.html' title='clap::Arg'>Arg</a><'n, 'l, 'h, 'g, 'p, 'r></code></h4>
|
||||
<div class='docblock'><p>Specifies if the flag may appear more than once such as for multiple debugging
|
||||
levels (as an example). <code>-ddd</code> for three levels of debugging, or <code>-d -d -d</code>.
|
||||
When this is set to <code>true</code> you recieve the number of occurances the user supplied
|
||||
|
@ -276,7 +305,7 @@ are ignored as flags cannot have a values or an <code>index</code>.</p>
|
|||
href="#example">Example</a></h1><pre id='rust-example-rendered' class='rust '>
|
||||
.<span class='ident'>multiple</span>(<span class='boolval'>true</span>)
|
||||
</pre>
|
||||
</div><h4 id='method.possible_values' class='method'><code>fn <a href='#method.possible_values' class='fnname'>possible_values</a>(self, names: <a class='struct' href='http://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a><&'p <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>>) -> <a class='struct' href='../clap/struct.Arg.html' title='clap::Arg'>Arg</a><'n, 'l, 'h, 'b, 'p, 'r></code></h4>
|
||||
</div><h4 id='method.possible_values' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.possible_values' class='fnname'>possible_values</a>(self, names: <a class='struct' href='http://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a><&'p <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>>) -> <a class='struct' href='../clap/struct.Arg.html' title='clap::Arg'>Arg</a><'n, 'l, 'h, 'g, 'p, 'r></code></h4>
|
||||
<div class='docblock'><p>Specifies a list of possible values for this argument. At runtime, clap verifies that only
|
||||
one of the specified values was used, or fails with a usage string.</p>
|
||||
|
||||
|
@ -286,6 +315,13 @@ one of the specified values was used, or fails with a usage string.</p>
|
|||
href="#example">Example</a></h1><pre id='rust-example-rendered' class='rust '>
|
||||
.<span class='ident'>possible_values</span>(<span class='macro'>vec</span><span class='macro'>!</span>[<span class='string'>"fast"</span>, <span class='string'>"slow"</span>])
|
||||
</pre>
|
||||
</div><h4 id='method.group' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.group' class='fnname'>group</a>(self, name: &'g <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='struct' href='../clap/struct.Arg.html' title='clap::Arg'>Arg</a><'n, 'l, 'h, 'g, 'p, 'r></code></h4>
|
||||
<div class='docblock'><p>Specifies the name of the group the argument belongs to.</p>
|
||||
|
||||
<h1 id="example" class='section-header'><a
|
||||
href="#example">Example</a></h1><pre id='rust-example-rendered' class='rust '>
|
||||
.<span class='ident'>group</span>(<span class='string'>"mode"</span>)
|
||||
</pre>
|
||||
</div></div></section>
|
||||
<section id='search' class="content hidden"></section>
|
||||
|
||||
|
|
203
docs/clap/struct.ArgGroup.html
Normal file
203
docs/clap/struct.ArgGroup.html
Normal file
|
@ -0,0 +1,203 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="generator" content="rustdoc">
|
||||
<meta name="description" content="API documentation for the Rust `ArgGroup` struct in crate `clap`.">
|
||||
<meta name="keywords" content="rust, rustlang, rust-lang, ArgGroup">
|
||||
|
||||
<title>clap::ArgGroup - Rust</title>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../main.css">
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
<body class="rustdoc">
|
||||
<!--[if lte IE 8]>
|
||||
<div class="warning">
|
||||
This old browser is unsupported and will most likely display funky
|
||||
things.
|
||||
</div>
|
||||
<![endif]-->
|
||||
|
||||
|
||||
|
||||
<section class="sidebar">
|
||||
|
||||
<p class='location'><a href='index.html'>clap</a></p><script>window.sidebarCurrent = {name: 'ArgGroup', ty: 'struct', relpath: ''};</script><script defer src="sidebar-items.js"></script>
|
||||
</section>
|
||||
|
||||
<nav class="sub">
|
||||
<form class="search-form js-only">
|
||||
<div class="search-container">
|
||||
<input class="search-input" name="search"
|
||||
autocomplete="off"
|
||||
placeholder="Click or press 'S' to search, '?' for more options..."
|
||||
type="search">
|
||||
</div>
|
||||
</form>
|
||||
</nav>
|
||||
|
||||
<section id='main' class="content struct">
|
||||
<h1 class='fqn'><span class='in-band'>Struct <a href='index.html'>clap</a>::<wbr><a class='struct' href=''>ArgGroup</a><wbr></span><span class='out-of-band'><span id='render-detail'>
|
||||
<a id="collapse-all" href="#">[-]</a> <a id="expand-all" href="#">[+]</a>
|
||||
</span><a id='src-12397' href='../src/clap/args/group.rs.html#36-47'>[src]</a></span></h1>
|
||||
<pre class='rust struct'>pub struct ArgGroup<'n, 'ar> {
|
||||
// some fields omitted
|
||||
}</pre><div class='docblock'><p>ArgGroups are a family of related arguments and provide a few useful features for you. By
|
||||
placing arguments in a logical group, you can make easier requirement and exclusion rules. For
|
||||
instance, you can make an ArgGroup required, this means that one (and <em>only</em> one) argument
|
||||
from that group must be present. Using more than one argument from an ArgGroup causes a
|
||||
failure (graceful exit).</p>
|
||||
|
||||
<p>You can also do things such as name an ArgGroup as a confliction or requirement, meaning any
|
||||
of the arguments that belong to that group will cause a failure if present, or must present
|
||||
respectively.</p>
|
||||
|
||||
<p>Perhaps the most common use of ArgGroups is to require one and <em>only</em> one argument to be
|
||||
present out of a given set. For example, lets say that you were building an application
|
||||
where one could set a given version number by supplying a string using an option argument,
|
||||
such as <code>--set-ver v1.2.3</code>, you also wanted to support automatically using a previous
|
||||
version numer and simply incrementing one of the three numbers, so you create three flags
|
||||
<code>--major</code>, <code>--minor</code>, and <code>--patch</code>. All of these arguments shouldn't be used at one time
|
||||
but perhaps you want to specify that <em>at least one</em> of them is used. You can create a
|
||||
group</p>
|
||||
|
||||
<h1 id="example" class='section-header'><a
|
||||
href="#example">Example</a></h1><pre id='rust-example-rendered' class='rust '>
|
||||
.<span class='ident'>args_from_usage</span>(<span class='string'>"--set-ver [ver] 'set the version manually'
|
||||
--major 'auto increase major'
|
||||
--minor 'auto increase minor'
|
||||
--patch 'auto increase patch"</span>)
|
||||
.<span class='ident'>arg_group</span>(<span class='ident'>ArgGroup</span>::<span class='ident'>with_name</span>(<span class='string'>"vers"</span>)
|
||||
.<span class='ident'>add_all</span>(<span class='macro'>vec</span><span class='macro'>!</span>[<span class='string'>"ver"</span>, <span class='string'>"major"</span>, <span class='string'>"minor"</span>,<span class='string'>"patch"</span>])
|
||||
.<span class='ident'>required</span>(<span class='boolval'>true</span>))
|
||||
</pre>
|
||||
</div><h2 id='methods'>Methods</h2><h3 class='impl'><a class='stability Unmarked' title='No stability level'></a><code>impl<'n, 'ar> <a class='struct' href='../clap/struct.ArgGroup.html' title='clap::ArgGroup'>ArgGroup</a><'n, 'ar></code></h3><div class='impl-items'><h4 id='method.with_name' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.with_name' class='fnname'>with_name</a>(n: &'n <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='struct' href='../clap/struct.ArgGroup.html' title='clap::ArgGroup'>ArgGroup</a><'n, 'ar></code></h4>
|
||||
<div class='docblock'><p>Creates a new instace of <code>ArgGroup</code> using a unique string name.
|
||||
The name will only be used by the library consumer and not displayed to the user</p>
|
||||
|
||||
<h1 id="example" class='section-header'><a
|
||||
href="#example">Example</a></h1><pre id='rust-example-rendered' class='rust '>
|
||||
<span class='ident'>ArgGroup</span>::<span class='ident'>with_name</span>(<span class='string'>"conifg"</span>)
|
||||
</pre>
|
||||
</div><h4 id='method.add' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.add' class='fnname'>add</a>(self, n: &'ar <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='struct' href='../clap/struct.ArgGroup.html' title='clap::ArgGroup'>ArgGroup</a><'n, 'ar></code></h4>
|
||||
<div class='docblock'><p>Adds an argument to this group by name</p>
|
||||
|
||||
<h1 id="example" class='section-header'><a
|
||||
href="#example">Example</a></h1><pre id='rust-example-rendered' class='rust '>
|
||||
.<span class='ident'>add</span>(<span class='string'>"config"</span>)
|
||||
</pre>
|
||||
</div><h4 id='method.add_all' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.add_all' class='fnname'>add_all</a>(self, ns: <a class='struct' href='http://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a><&'ar <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>>) -> <a class='struct' href='../clap/struct.ArgGroup.html' title='clap::ArgGroup'>ArgGroup</a><'n, 'ar></code></h4>
|
||||
<div class='docblock'><p>Adds multiple arguments to this group by name inside a Vec</p>
|
||||
|
||||
<h1 id="example" class='section-header'><a
|
||||
href="#example">Example</a></h1><pre id='rust-example-rendered' class='rust '>
|
||||
.<span class='ident'>add_all</span>(<span class='macro'>vec</span><span class='macro'>!</span>[<span class='string'>"config"</span>, <span class='string'>"input"</span>, <span class='string'>"output"</span>])
|
||||
</pre>
|
||||
</div><h4 id='method.required' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.required' class='fnname'>required</a>(self, r: <a href='http://doc.rust-lang.org/nightly/std/primitive.bool.html'>bool</a>) -> <a class='struct' href='../clap/struct.ArgGroup.html' title='clap::ArgGroup'>ArgGroup</a><'n, 'ar></code></h4>
|
||||
<div class='docblock'><p>Sets the requirement of this group. A required group will be displayed in the usage string
|
||||
of the application in the format <code>[arg|arg2|arg3]</code>. A required <code>ArgGroup</code> simply states
|
||||
that one, and only one argument from this group <em>must</em> be present at runtime (unless
|
||||
conflicting with another argument).</p>
|
||||
|
||||
<h1 id="example" class='section-header'><a
|
||||
href="#example">Example</a></h1><pre id='rust-example-rendered' class='rust '>
|
||||
.<span class='ident'>required</span>(<span class='boolval'>true</span>)
|
||||
</pre>
|
||||
</div><h4 id='method.requires' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.requires' class='fnname'>requires</a>(self, n: &'ar <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='struct' href='../clap/struct.ArgGroup.html' title='clap::ArgGroup'>ArgGroup</a><'n, 'ar></code></h4>
|
||||
<div class='docblock'><p>Sets the requirement rules of this group. This is not to be confused with a required group.
|
||||
Requirement rules function just like argument requirement rules, you can name other arguments
|
||||
or groups that must be present when one of the arguments from this group is used.</p>
|
||||
|
||||
<p><strong>NOTE:</strong> The name provided may be an argument, or group name</p>
|
||||
|
||||
<h1 id="example" class='section-header'><a
|
||||
href="#example">Example</a></h1><pre id='rust-example-rendered' class='rust '>
|
||||
.<span class='ident'>requires</span>(<span class='string'>"config"</span>)
|
||||
</pre>
|
||||
</div><h4 id='method.requires_all' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.requires_all' class='fnname'>requires_all</a>(self, ns: <a class='struct' href='http://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a><&'ar <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>>) -> <a class='struct' href='../clap/struct.ArgGroup.html' title='clap::ArgGroup'>ArgGroup</a><'n, 'ar></code></h4>
|
||||
<div class='docblock'><p>Sets the requirement rules of this group. This is not to be confused with a required group.
|
||||
Requirement rules function just like argument requirement rules, you can name other arguments
|
||||
or groups that must be present when one of the arguments from this group is used.</p>
|
||||
|
||||
<p><strong>NOTE:</strong> The names provided may be an argument, or group name</p>
|
||||
|
||||
<h1 id="example" class='section-header'><a
|
||||
href="#example">Example</a></h1><pre id='rust-example-rendered' class='rust '>
|
||||
.<span class='ident'>requires_all</span>(<span class='macro'>vec</span><span class='macro'>!</span>[<span class='string'>"config"</span>, <span class='string'>"input"</span>])
|
||||
</pre>
|
||||
</div><h4 id='method.conflicts_with' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.conflicts_with' class='fnname'>conflicts_with</a>(self, n: &'ar <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='struct' href='../clap/struct.ArgGroup.html' title='clap::ArgGroup'>ArgGroup</a><'n, 'ar></code></h4>
|
||||
<div class='docblock'><p>Sets the exclusion rules of this group. Exclusion rules function just like argument exclusion
|
||||
rules, you can name other arguments or groups that must not be present when one of the arguments
|
||||
from this group are used.</p>
|
||||
|
||||
<p><strong>NOTE:</strong> The name provided may be an argument, or group name</p>
|
||||
|
||||
<h1 id="example" class='section-header'><a
|
||||
href="#example">Example</a></h1><pre id='rust-example-rendered' class='rust '>
|
||||
.<span class='ident'>conflicts_with</span>(<span class='string'>"config"</span>)
|
||||
</pre>
|
||||
</div><h4 id='method.conflicts_with_all' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.conflicts_with_all' class='fnname'>conflicts_with_all</a>(self, ns: <a class='struct' href='http://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a><&'ar <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>>) -> <a class='struct' href='../clap/struct.ArgGroup.html' title='clap::ArgGroup'>ArgGroup</a><'n, 'ar></code></h4>
|
||||
<div class='docblock'><p>Sets the exclusion rules of this group. Exclusion rules function just like argument exclusion
|
||||
rules, you can name other arguments or groups that must not be present when one of the arguments
|
||||
from this group are used.</p>
|
||||
|
||||
<p><strong>NOTE:</strong> The names provided may be an argument, or group name</p>
|
||||
|
||||
<h1 id="example" class='section-header'><a
|
||||
href="#example">Example</a></h1><pre id='rust-example-rendered' class='rust '>
|
||||
.<span class='ident'>conflicts_with_all</span>(<span class='macro'>vec</span><span class='macro'>!</span>[<span class='string'>"config"</span>, <span class='string'>"input"</span>])
|
||||
</pre>
|
||||
</div></div><h2 id='implementations'>Trait Implementations</h2><h3 class='impl'><a class='stability Stable' title='Stable'></a><code>impl<'n, 'ar> <a class='trait' href='http://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html' title='core::fmt::Debug'>Debug</a> for <a class='struct' href='../clap/struct.ArgGroup.html' title='clap::ArgGroup'>ArgGroup</a><'n, 'ar></code></h3><div class='impl-items'><h4 id='method.fmt' class='method'><a class='stability Stable' title='Stable'></a><code>fn <a href='http://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#method.fmt' class='fnname'>fmt</a>(&self, f: &mut <a class='struct' href='http://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html' title='core::fmt::Formatter'>Formatter</a>) -> <a class='type' href='http://doc.rust-lang.org/nightly/core/fmt/type.Result.html' title='core::fmt::Result'>Result</a></code></h4>
|
||||
</div></section>
|
||||
<section id='search' class="content hidden"></section>
|
||||
|
||||
<section class="footer"></section>
|
||||
|
||||
<div id="help" class="hidden">
|
||||
<div class="shortcuts">
|
||||
<h1>Keyboard shortcuts</h1>
|
||||
<dl>
|
||||
<dt>?</dt>
|
||||
<dd>Show this help dialog</dd>
|
||||
<dt>S</dt>
|
||||
<dd>Focus the search field</dd>
|
||||
<dt>⇤</dt>
|
||||
<dd>Move up in search results</dd>
|
||||
<dt>⇥</dt>
|
||||
<dd>Move down in search results</dd>
|
||||
<dt>⏎</dt>
|
||||
<dd>Go to active search result</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="infos">
|
||||
<h1>Search tricks</h1>
|
||||
<p>
|
||||
Prefix searches with a type followed by a colon (e.g.
|
||||
<code>fn:</code>) to restrict the search to a given type.
|
||||
</p>
|
||||
<p>
|
||||
Accepted types are: <code>fn</code>, <code>mod</code>,
|
||||
<code>struct</code>, <code>enum</code>,
|
||||
<code>trait</code>, <code>typedef</code> (or
|
||||
<code>tdef</code>).
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
window.rootPath = "../";
|
||||
window.currentCrate = "clap";
|
||||
window.playgroundUrl = "";
|
||||
</script>
|
||||
<script src="../jquery.js"></script>
|
||||
<script src="../main.js"></script>
|
||||
|
||||
<script async src="../search-index.js"></script>
|
||||
</body>
|
||||
</html>
|
|
@ -41,10 +41,10 @@
|
|||
</nav>
|
||||
|
||||
<section id='main' class="content struct">
|
||||
<h1 class='fqn'><span class='in-band'>Struct <a href='index.html'>clap</a>::<wbr><a class='struct' href=''>ArgMatches</a></span><span class='out-of-band'><span id='render-detail'>
|
||||
<h1 class='fqn'><span class='in-band'>Struct <a href='index.html'>clap</a>::<wbr><a class='struct' href=''>ArgMatches</a><wbr></span><span class='out-of-band'><span id='render-detail'>
|
||||
<a id="collapse-all" href="#">[-]</a> <a id="expand-all" href="#">[+]</a>
|
||||
</span><a id='src-9261' class='srclink' href='../src/clap/args/argmatches.rs.html#55-62'>[src]</a></span></h1>
|
||||
<pre class='rust struct'>pub struct ArgMatches<'a> {
|
||||
</span><a id='src-11482' href='../src/clap/args/argmatches.rs.html#55-62'>[src]</a></span></h1>
|
||||
<pre class='rust struct'>pub struct ArgMatches<'n, 'a> {
|
||||
// some fields omitted
|
||||
}</pre><div class='docblock'><p>Used to get information about the arguments that where supplied to the program at runtime by
|
||||
the user. To get a new instance of this struct you use <code>.get_matches()</code> of the <code>App</code> struct.</p>
|
||||
|
@ -86,7 +86,7 @@ the user. To get a new instance of this struct you use <code>.get_matches()</cod
|
|||
}
|
||||
}
|
||||
</pre>
|
||||
</div><h2 id='methods'>Methods</h2><h3 class='impl'><code>impl<'a> <a class='struct' href='../clap/struct.ArgMatches.html' title='clap::ArgMatches'>ArgMatches</a><'a></code></h3><div class='impl-items'><h4 id='method.value_of' class='method'><code>fn <a href='#method.value_of' class='fnname'>value_of</a><'n>(&self, name: &'n <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='enum' href='http://doc.rust-lang.org/nightly/core/option/enum.Option.html' title='core::option::Option'>Option</a><&<a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>></code></h4>
|
||||
</div><h2 id='methods'>Methods</h2><h3 class='impl'><a class='stability Unmarked' title='No stability level'></a><code>impl<'n, 'a> <a class='struct' href='../clap/struct.ArgMatches.html' title='clap::ArgMatches'>ArgMatches</a><'n, 'a></code></h3><div class='impl-items'><h4 id='method.value_of' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.value_of' class='fnname'>value_of</a><'na>(&self, name: &'na <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='enum' href='http://doc.rust-lang.org/nightly/core/option/enum.Option.html' title='core::option::Option'>Option</a><&<a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>></code></h4>
|
||||
<div class='docblock'><p>Gets the value of a specific option or positional argument (i.e. an argument that takes
|
||||
an additional value at runtime). If the option wasn't present at runtime
|
||||
it returns <code>None</code>. </p>
|
||||
|
@ -100,7 +100,7 @@ prefer <code>values_of()</code> as <code>value_of()</code> will only return the
|
|||
<span class='macro'>println</span><span class='macro'>!</span>(<span class='string'>"Value for output: {}"</span>, <span class='ident'>o</span>);
|
||||
}
|
||||
</pre>
|
||||
</div><h4 id='method.values_of' class='method'><code>fn <a href='#method.values_of' class='fnname'>values_of</a><'n>(&'a self, name: &'n <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='enum' href='http://doc.rust-lang.org/nightly/core/option/enum.Option.html' title='core::option::Option'>Option</a><<a class='struct' href='http://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a><&'a <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>>></code></h4>
|
||||
</div><h4 id='method.values_of' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.values_of' class='fnname'>values_of</a><'na>(&'a self, name: &'na <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='enum' href='http://doc.rust-lang.org/nightly/core/option/enum.Option.html' title='core::option::Option'>Option</a><<a class='struct' href='http://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html' title='collections::vec::Vec'>Vec</a><&'a <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>>></code></h4>
|
||||
<div class='docblock'><p>Gets the values of a specific option or positional argument in a vector (i.e. an argument
|
||||
that takes multiple values at runtime). If the option wasn't present at runtime it
|
||||
returns <code>None</code></p>
|
||||
|
@ -116,7 +116,7 @@ returns <code>None</code></p>
|
|||
}
|
||||
}
|
||||
</pre>
|
||||
</div><h4 id='method.is_present' class='method'><code>fn <a href='#method.is_present' class='fnname'>is_present</a><'n>(&self, name: &'n <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a href='http://doc.rust-lang.org/nightly/std/primitive.bool.html'>bool</a></code></h4>
|
||||
</div><h4 id='method.is_present' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.is_present' class='fnname'>is_present</a><'na>(&self, name: &'na <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a href='http://doc.rust-lang.org/nightly/std/primitive.bool.html'>bool</a></code></h4>
|
||||
<div class='docblock'><p>Returns if an argument was present at runtime.</p>
|
||||
|
||||
<h1 id="example" class='section-header'><a
|
||||
|
@ -125,7 +125,7 @@ returns <code>None</code></p>
|
|||
<span class='macro'>println</span><span class='macro'>!</span>(<span class='string'>"The output argument was used!"</span>);
|
||||
}
|
||||
</pre>
|
||||
</div><h4 id='method.occurrences_of' class='method'><code>fn <a href='#method.occurrences_of' class='fnname'>occurrences_of</a><'n>(&self, name: &'n <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a href='http://doc.rust-lang.org/nightly/std/primitive.u8.html'>u8</a></code></h4>
|
||||
</div><h4 id='method.occurrences_of' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.occurrences_of' class='fnname'>occurrences_of</a><'na>(&self, name: &'na <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a href='http://doc.rust-lang.org/nightly/std/primitive.u8.html'>u8</a></code></h4>
|
||||
<div class='docblock'><p>Returns the number of occurrences of an option, flag, or positional argument at runtime.
|
||||
If an argument isn't present it will return <code>0</code>. Can be used on arguments which <em>don't</em>
|
||||
allow multiple occurrences, but will obviously only return <code>0</code> or <code>1</code>.</p>
|
||||
|
@ -138,7 +138,7 @@ allow multiple occurrences, but will obviously only return <code>0</code> or <co
|
|||
<span class='macro'>println</span><span class='macro'>!</span>(<span class='string'>"Debug mode kind of on"</span>);
|
||||
}
|
||||
</pre>
|
||||
</div><h4 id='method.subcommand_matches' class='method'><code>fn <a href='#method.subcommand_matches' class='fnname'>subcommand_matches</a><'n>(&self, name: &'n <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='enum' href='http://doc.rust-lang.org/nightly/core/option/enum.Option.html' title='core::option::Option'>Option</a><&<a class='struct' href='../clap/struct.ArgMatches.html' title='clap::ArgMatches'>ArgMatches</a>></code></h4>
|
||||
</div><h4 id='method.subcommand_matches' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.subcommand_matches' class='fnname'>subcommand_matches</a><'na>(&self, name: &'na <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='enum' href='http://doc.rust-lang.org/nightly/core/option/enum.Option.html' title='core::option::Option'>Option</a><&<a class='struct' href='../clap/struct.ArgMatches.html' title='clap::ArgMatches'>ArgMatches</a>></code></h4>
|
||||
<div class='docblock'><p>Returns the <code>ArgMatches</code> for a particular subcommand or None if the subcommand wasn't
|
||||
present at runtime.</p>
|
||||
|
||||
|
@ -148,7 +148,7 @@ present at runtime.</p>
|
|||
<span class='comment'>// Use matches as normal</span>
|
||||
}
|
||||
</pre>
|
||||
</div><h4 id='method.subcommand_name' class='method'><code>fn <a href='#method.subcommand_name' class='fnname'>subcommand_name</a>(&self) -> <a class='enum' href='http://doc.rust-lang.org/nightly/core/option/enum.Option.html' title='core::option::Option'>Option</a><&<a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>></code></h4>
|
||||
</div><h4 id='method.subcommand_name' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.subcommand_name' class='fnname'>subcommand_name</a>(&self) -> <a class='enum' href='http://doc.rust-lang.org/nightly/core/option/enum.Option.html' title='core::option::Option'>Option</a><&<a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>></code></h4>
|
||||
<div class='docblock'><p>Returns the name of the subcommand used of the parent <code>App</code>, or <code>None</code> if one wasn't found</p>
|
||||
|
||||
<p><em>NOTE</em>: Only a single subcommand may be present per <code>App</code> at runtime, does <em>NOT</em> check for
|
||||
|
@ -162,7 +162,7 @@ the name of sub-subcommand's names</p>
|
|||
_ <span class='op'>=></span> {}, <span class='comment'>// Either no subcommand or one not tested for...</span>
|
||||
}
|
||||
</pre>
|
||||
</div><h4 id='method.subcommand' class='method'><code>fn <a href='#method.subcommand' class='fnname'>subcommand</a>(&self) -> <a href='http://doc.rust-lang.org/nightly/std/primitive.tuple.html'>(&<a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>, <a class='enum' href='http://doc.rust-lang.org/nightly/core/option/enum.Option.html' title='core::option::Option'>Option</a><&<a class='struct' href='../clap/struct.ArgMatches.html' title='clap::ArgMatches'>ArgMatches</a>>)</a></code></h4>
|
||||
</div><h4 id='method.subcommand' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.subcommand' class='fnname'>subcommand</a>(&self) -> <a href='http://doc.rust-lang.org/nightly/std/primitive.tuple.html'>(&<a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>, <a class='enum' href='http://doc.rust-lang.org/nightly/core/option/enum.Option.html' title='core::option::Option'>Option</a><&<a class='struct' href='../clap/struct.ArgMatches.html' title='clap::ArgMatches'>ArgMatches</a>>)</a></code></h4>
|
||||
<div class='docblock'><p>Returns the name and <code>ArgMatches</code> of the subcommand used at runtime or ("", None) if one
|
||||
wasn't found.</p>
|
||||
|
||||
|
@ -174,7 +174,7 @@ wasn't found.</p>
|
|||
_ <span class='op'>=></span> {}, <span class='comment'>// Either no subcommand or one not tested for...</span>
|
||||
}
|
||||
</pre>
|
||||
</div><h4 id='method.usage' class='method'><code>fn <a href='#method.usage' class='fnname'>usage</a>(&self) -> &<a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a></code></h4>
|
||||
</div><h4 id='method.usage' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.usage' class='fnname'>usage</a>(&self) -> &<a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a></code></h4>
|
||||
<div class='docblock'><p>Returns a string slice of the usage statement for the <code>App</code> (or <code>SubCommand</code>)</p>
|
||||
|
||||
<h1 id="example" class='section-header'><a
|
||||
|
|
|
@ -41,12 +41,12 @@
|
|||
</nav>
|
||||
|
||||
<section id='main' class="content struct">
|
||||
<h1 class='fqn'><span class='in-band'>Struct <a href='index.html'>clap</a>::<wbr><a class='struct' href=''>SubCommand</a></span><span class='out-of-band'><span id='render-detail'>
|
||||
<h1 class='fqn'><span class='in-band'>Struct <a href='index.html'>clap</a>::<wbr><a class='struct' href=''>SubCommand</a><wbr></span><span class='out-of-band'><span id='render-detail'>
|
||||
<a id="collapse-all" href="#">[-]</a> <a id="expand-all" href="#">[+]</a>
|
||||
</span><a id='src-9620' class='srclink' href='../src/clap/args/subcommand.rs.html#23-26'>[src]</a></span></h1>
|
||||
<pre class='rust struct'>pub struct SubCommand<'a> {
|
||||
pub name: <a class='struct' href='http://doc.rust-lang.org/nightly/collections/string/struct.String.html' title='collections::string::String'>String</a>,
|
||||
pub matches: <a class='struct' href='../clap/struct.ArgMatches.html' title='clap::ArgMatches'>ArgMatches</a><'a>,
|
||||
</span><a id='src-11846' href='../src/clap/args/subcommand.rs.html#23-26'>[src]</a></span></h1>
|
||||
<pre class='rust struct'>pub struct SubCommand<'n, 'a> {
|
||||
pub name: &'n <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>,
|
||||
pub matches: <a class='struct' href='../clap/struct.ArgMatches.html' title='clap::ArgMatches'>ArgMatches</a><'n, 'a>,
|
||||
}</pre><div class='docblock'><p>The abstract representation of a command line subcommand used by the consumer of the library.</p>
|
||||
|
||||
<p>This struct is used by the library consumer and describes all the valid options of the subcommand for
|
||||
|
@ -62,9 +62,7 @@ their own arguments and subcommands).</p>
|
|||
.<span class='ident'>index</span>(<span class='number'>1</span>))
|
||||
</pre>
|
||||
</div><h2 class='fields'>Fields</h2>
|
||||
<table><tr class='stab '>
|
||||
<td id='structfield.name'><code>name</code></td><td></td></tr><tr class='stab '>
|
||||
<td id='structfield.matches'><code>matches</code></td><td></td></tr></table><h2 id='methods'>Methods</h2><h3 class='impl'><code>impl<'a> <a class='struct' href='../clap/struct.SubCommand.html' title='clap::SubCommand'>SubCommand</a><'a></code></h3><div class='impl-items'><h4 id='method.new' class='method'><code>fn <a href='#method.new' class='fnname'>new</a><'n, 'au, 'v, 'ab, 'u, 'h, 'ar>(name: &'n <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='struct' href='../clap/struct.App.html' title='clap::App'>App</a><'au, 'v, 'ab, 'u, 'h, 'ar></code></h4>
|
||||
<table><tr><td id='structfield.name'><a class='stability Unmarked' title='No stability level'></a><code>name</code></td><td></td></tr><tr><td id='structfield.matches'><a class='stability Unmarked' title='No stability level'></a><code>matches</code></td><td></td></tr></table><h2 id='methods'>Methods</h2><h3 class='impl'><a class='stability Unmarked' title='No stability level'></a><code>impl<'n, 'a> <a class='struct' href='../clap/struct.SubCommand.html' title='clap::SubCommand'>SubCommand</a><'n, 'a></code></h3><div class='impl-items'><h4 id='method.new' class='method'><a class='stability Unmarked' title='No stability level'></a><code>fn <a href='#method.new' class='fnname'>new</a><'au, 'v, 'ab, 'u, 'h, 'ar>(name: &'ar <a href='http://doc.rust-lang.org/nightly/std/primitive.str.html'>str</a>) -> <a class='struct' href='../clap/struct.App.html' title='clap::App'>App</a><'au, 'v, 'ab, 'u, 'h, 'ar></code></h4>
|
||||
<div class='docblock'><p>Creates a new instance of a subcommand requiring a name. Will be displayed
|
||||
to the user when they print version or help and usage information.</p>
|
||||
|
||||
|
|
10
docs/implementors/core/fmt/trait.Debug.js
Normal file
10
docs/implementors/core/fmt/trait.Debug.js
Normal file
|
@ -0,0 +1,10 @@
|
|||
(function() {var implementors = {};
|
||||
implementors['clap'] = ["<a class='stability Stable' title='Stable'></a>impl<'n, 'ar> <a class='trait' href='http://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html' title='core::fmt::Debug'>Debug</a> for <a class='struct' href='clap/struct.ArgGroup.html' title='clap::ArgGroup'>ArgGroup</a><'n, 'ar>",];
|
||||
|
||||
if (window.register_implementors) {
|
||||
window.register_implementors(implementors);
|
||||
} else {
|
||||
window.pending_implementors = implementors;
|
||||
}
|
||||
|
||||
})()
|
|
@ -245,10 +245,6 @@ nav.sub {
|
|||
.content .highlighted.tymethod { background-color: #c6afb3; }
|
||||
.content .highlighted.type { background-color: #c6afb3; }
|
||||
|
||||
.docblock.short p {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
.docblock.short.nowrap {
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
|
@ -341,16 +337,11 @@ nav.sub {
|
|||
/* Shift "where ..." part of method definition down a line */
|
||||
.content .method .where { display: block; }
|
||||
/* Bit of whitespace to indent it */
|
||||
.content .method .where::before { content: ' '; }
|
||||
.content .method .where::before { content: ' '; }
|
||||
|
||||
.content .methods > div { margin-left: 40px; }
|
||||
.content .methods .docblock { margin-left: 40px; }
|
||||
|
||||
.content .impl-items .docblock, .content .impl-items .stability {
|
||||
margin-left: 40px;
|
||||
}
|
||||
.content .impl-items .method, .content .impl-items .type {
|
||||
margin-left: 20px;
|
||||
}
|
||||
.content .impl-items .docblock { margin-left: 40px; }
|
||||
|
||||
nav {
|
||||
border-bottom: 1px solid #e0e0e0;
|
||||
|
@ -477,32 +468,31 @@ a {
|
|||
padding: 20px;
|
||||
}
|
||||
|
||||
em.stab.unstable { background: #FFF5D6; border-color: #FFC600; }
|
||||
em.stab.deprecated { background: #F3DFFF; border-color: #7F0087; }
|
||||
em.stab {
|
||||
display: inline-block;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
padding: 3px;
|
||||
margin-bottom: 5px;
|
||||
font-size: 90%;
|
||||
font-style: normal;
|
||||
}
|
||||
em.stab p {
|
||||
display: inline;
|
||||
.stability {
|
||||
border-left: 6px solid;
|
||||
padding: 3px 6px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.module-item .stab {
|
||||
border-width: 0;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
background: inherit !important;
|
||||
h1 .stability {
|
||||
text-transform: lowercase;
|
||||
font-weight: 400;
|
||||
margin-left: 14px;
|
||||
padding: 4px 10px;
|
||||
}
|
||||
|
||||
.module-item.unstable {
|
||||
opacity: 0.65;
|
||||
.impl-items .stability, .methods .stability {
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
.stability.Deprecated { border-color: #A071A8; color: #82478C; }
|
||||
.stability.Experimental { border-color: #D46D6A; color: #AA3C39; }
|
||||
.stability.Unstable { border-color: #D4B16A; color: #AA8439; }
|
||||
.stability.Stable { border-color: #54A759; color: #2D8632; }
|
||||
.stability.Frozen { border-color: #009431; color: #007726; }
|
||||
.stability.Locked { border-color: #0084B6; color: #00668c; }
|
||||
.stability.Unmarked { border-color: #BBBBBB; }
|
||||
|
||||
td.summary-column {
|
||||
width: 100%;
|
||||
}
|
||||
|
@ -510,6 +500,11 @@ td.summary-column {
|
|||
.summary {
|
||||
padding-right: 0px;
|
||||
}
|
||||
.summary.Deprecated { background-color: #A071A8; }
|
||||
.summary.Experimental { background-color: #D46D6A; }
|
||||
.summary.Unstable { background-color: #D4B16A; }
|
||||
.summary.Stable { background-color: #54A759; }
|
||||
.summary.Unmarked { background-color: #BBBBBB; }
|
||||
|
||||
:target { background: #FDFFD3; }
|
||||
.line-numbers :target { background-color: transparent; }
|
||||
|
@ -560,9 +555,9 @@ pre.rust { position: relative; }
|
|||
.collapse-toggle {
|
||||
font-weight: 300;
|
||||
position: absolute;
|
||||
left: -23px;
|
||||
left: 13px;
|
||||
color: #999;
|
||||
top: 0;
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
.toggle-wrapper > .collapse-toggle {
|
||||
|
|
|
@ -802,9 +802,6 @@
|
|||
if (query['gotosrc']) {
|
||||
window.location = $('#src-' + query['gotosrc']).attr('href');
|
||||
}
|
||||
if (query['gotomacrosrc']) {
|
||||
window.location = $('.srclink').attr('href');
|
||||
}
|
||||
|
||||
$("#expand-all").on("click", function() {
|
||||
$(".docblock").show();
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1395,10 +1395,194 @@
|
|||
<span id="1353">1353</span>
|
||||
<span id="1354">1354</span>
|
||||
<span id="1355">1355</span>
|
||||
<span id="1356">1356</span>
|
||||
<span id="1357">1357</span>
|
||||
<span id="1358">1358</span>
|
||||
<span id="1359">1359</span>
|
||||
<span id="1360">1360</span>
|
||||
<span id="1361">1361</span>
|
||||
<span id="1362">1362</span>
|
||||
<span id="1363">1363</span>
|
||||
<span id="1364">1364</span>
|
||||
<span id="1365">1365</span>
|
||||
<span id="1366">1366</span>
|
||||
<span id="1367">1367</span>
|
||||
<span id="1368">1368</span>
|
||||
<span id="1369">1369</span>
|
||||
<span id="1370">1370</span>
|
||||
<span id="1371">1371</span>
|
||||
<span id="1372">1372</span>
|
||||
<span id="1373">1373</span>
|
||||
<span id="1374">1374</span>
|
||||
<span id="1375">1375</span>
|
||||
<span id="1376">1376</span>
|
||||
<span id="1377">1377</span>
|
||||
<span id="1378">1378</span>
|
||||
<span id="1379">1379</span>
|
||||
<span id="1380">1380</span>
|
||||
<span id="1381">1381</span>
|
||||
<span id="1382">1382</span>
|
||||
<span id="1383">1383</span>
|
||||
<span id="1384">1384</span>
|
||||
<span id="1385">1385</span>
|
||||
<span id="1386">1386</span>
|
||||
<span id="1387">1387</span>
|
||||
<span id="1388">1388</span>
|
||||
<span id="1389">1389</span>
|
||||
<span id="1390">1390</span>
|
||||
<span id="1391">1391</span>
|
||||
<span id="1392">1392</span>
|
||||
<span id="1393">1393</span>
|
||||
<span id="1394">1394</span>
|
||||
<span id="1395">1395</span>
|
||||
<span id="1396">1396</span>
|
||||
<span id="1397">1397</span>
|
||||
<span id="1398">1398</span>
|
||||
<span id="1399">1399</span>
|
||||
<span id="1400">1400</span>
|
||||
<span id="1401">1401</span>
|
||||
<span id="1402">1402</span>
|
||||
<span id="1403">1403</span>
|
||||
<span id="1404">1404</span>
|
||||
<span id="1405">1405</span>
|
||||
<span id="1406">1406</span>
|
||||
<span id="1407">1407</span>
|
||||
<span id="1408">1408</span>
|
||||
<span id="1409">1409</span>
|
||||
<span id="1410">1410</span>
|
||||
<span id="1411">1411</span>
|
||||
<span id="1412">1412</span>
|
||||
<span id="1413">1413</span>
|
||||
<span id="1414">1414</span>
|
||||
<span id="1415">1415</span>
|
||||
<span id="1416">1416</span>
|
||||
<span id="1417">1417</span>
|
||||
<span id="1418">1418</span>
|
||||
<span id="1419">1419</span>
|
||||
<span id="1420">1420</span>
|
||||
<span id="1421">1421</span>
|
||||
<span id="1422">1422</span>
|
||||
<span id="1423">1423</span>
|
||||
<span id="1424">1424</span>
|
||||
<span id="1425">1425</span>
|
||||
<span id="1426">1426</span>
|
||||
<span id="1427">1427</span>
|
||||
<span id="1428">1428</span>
|
||||
<span id="1429">1429</span>
|
||||
<span id="1430">1430</span>
|
||||
<span id="1431">1431</span>
|
||||
<span id="1432">1432</span>
|
||||
<span id="1433">1433</span>
|
||||
<span id="1434">1434</span>
|
||||
<span id="1435">1435</span>
|
||||
<span id="1436">1436</span>
|
||||
<span id="1437">1437</span>
|
||||
<span id="1438">1438</span>
|
||||
<span id="1439">1439</span>
|
||||
<span id="1440">1440</span>
|
||||
<span id="1441">1441</span>
|
||||
<span id="1442">1442</span>
|
||||
<span id="1443">1443</span>
|
||||
<span id="1444">1444</span>
|
||||
<span id="1445">1445</span>
|
||||
<span id="1446">1446</span>
|
||||
<span id="1447">1447</span>
|
||||
<span id="1448">1448</span>
|
||||
<span id="1449">1449</span>
|
||||
<span id="1450">1450</span>
|
||||
<span id="1451">1451</span>
|
||||
<span id="1452">1452</span>
|
||||
<span id="1453">1453</span>
|
||||
<span id="1454">1454</span>
|
||||
<span id="1455">1455</span>
|
||||
<span id="1456">1456</span>
|
||||
<span id="1457">1457</span>
|
||||
<span id="1458">1458</span>
|
||||
<span id="1459">1459</span>
|
||||
<span id="1460">1460</span>
|
||||
<span id="1461">1461</span>
|
||||
<span id="1462">1462</span>
|
||||
<span id="1463">1463</span>
|
||||
<span id="1464">1464</span>
|
||||
<span id="1465">1465</span>
|
||||
<span id="1466">1466</span>
|
||||
<span id="1467">1467</span>
|
||||
<span id="1468">1468</span>
|
||||
<span id="1469">1469</span>
|
||||
<span id="1470">1470</span>
|
||||
<span id="1471">1471</span>
|
||||
<span id="1472">1472</span>
|
||||
<span id="1473">1473</span>
|
||||
<span id="1474">1474</span>
|
||||
<span id="1475">1475</span>
|
||||
<span id="1476">1476</span>
|
||||
<span id="1477">1477</span>
|
||||
<span id="1478">1478</span>
|
||||
<span id="1479">1479</span>
|
||||
<span id="1480">1480</span>
|
||||
<span id="1481">1481</span>
|
||||
<span id="1482">1482</span>
|
||||
<span id="1483">1483</span>
|
||||
<span id="1484">1484</span>
|
||||
<span id="1485">1485</span>
|
||||
<span id="1486">1486</span>
|
||||
<span id="1487">1487</span>
|
||||
<span id="1488">1488</span>
|
||||
<span id="1489">1489</span>
|
||||
<span id="1490">1490</span>
|
||||
<span id="1491">1491</span>
|
||||
<span id="1492">1492</span>
|
||||
<span id="1493">1493</span>
|
||||
<span id="1494">1494</span>
|
||||
<span id="1495">1495</span>
|
||||
<span id="1496">1496</span>
|
||||
<span id="1497">1497</span>
|
||||
<span id="1498">1498</span>
|
||||
<span id="1499">1499</span>
|
||||
<span id="1500">1500</span>
|
||||
<span id="1501">1501</span>
|
||||
<span id="1502">1502</span>
|
||||
<span id="1503">1503</span>
|
||||
<span id="1504">1504</span>
|
||||
<span id="1505">1505</span>
|
||||
<span id="1506">1506</span>
|
||||
<span id="1507">1507</span>
|
||||
<span id="1508">1508</span>
|
||||
<span id="1509">1509</span>
|
||||
<span id="1510">1510</span>
|
||||
<span id="1511">1511</span>
|
||||
<span id="1512">1512</span>
|
||||
<span id="1513">1513</span>
|
||||
<span id="1514">1514</span>
|
||||
<span id="1515">1515</span>
|
||||
<span id="1516">1516</span>
|
||||
<span id="1517">1517</span>
|
||||
<span id="1518">1518</span>
|
||||
<span id="1519">1519</span>
|
||||
<span id="1520">1520</span>
|
||||
<span id="1521">1521</span>
|
||||
<span id="1522">1522</span>
|
||||
<span id="1523">1523</span>
|
||||
<span id="1524">1524</span>
|
||||
<span id="1525">1525</span>
|
||||
<span id="1526">1526</span>
|
||||
<span id="1527">1527</span>
|
||||
<span id="1528">1528</span>
|
||||
<span id="1529">1529</span>
|
||||
<span id="1530">1530</span>
|
||||
<span id="1531">1531</span>
|
||||
<span id="1532">1532</span>
|
||||
<span id="1533">1533</span>
|
||||
<span id="1534">1534</span>
|
||||
<span id="1535">1535</span>
|
||||
<span id="1536">1536</span>
|
||||
<span id="1537">1537</span>
|
||||
<span id="1538">1538</span>
|
||||
</pre><pre class='rust '>
|
||||
<span class='kw'>use</span> <span class='ident'>std</span>::<span class='ident'>collections</span>::<span class='ident'>BTreeMap</span>;
|
||||
<span class='kw'>use</span> <span class='ident'>std</span>::<span class='ident'>collections</span>::<span class='ident'>BTreeSet</span>;
|
||||
<span class='kw'>use</span> <span class='ident'>std</span>::<span class='ident'>collections</span>::<span class='ident'>HashSet</span>;
|
||||
<span class='kw'>use</span> <span class='ident'>std</span>::<span class='ident'>collections</span>::<span class='ident'>HashMap</span>;
|
||||
<span class='kw'>use</span> <span class='ident'>std</span>::<span class='ident'>env</span>;
|
||||
<span class='kw'>use</span> <span class='ident'>std</span>::<span class='ident'>path</span>::<span class='ident'>Path</span>;
|
||||
<span class='kw'>use</span> <span class='ident'>std</span>::<span class='ident'>vec</span>::<span class='ident'>IntoIter</span>;
|
||||
|
@ -1408,6 +1592,7 @@
|
|||
|
||||
<span class='kw'>use</span> <span class='ident'>args</span>::{ <span class='ident'>ArgMatches</span>, <span class='ident'>Arg</span>, <span class='ident'>SubCommand</span>, <span class='ident'>MatchedArg</span>};
|
||||
<span class='kw'>use</span> <span class='ident'>args</span>::{ <span class='ident'>FlagBuilder</span>, <span class='ident'>OptBuilder</span>, <span class='ident'>PosBuilder</span>};
|
||||
<span class='kw'>use</span> <span class='ident'>args</span>::<span class='ident'>ArgGroup</span>;
|
||||
|
||||
<span class='doccomment'>/// Used to create a representation of a command line program and all possible command line</span>
|
||||
<span class='doccomment'>/// arguments for parsing at runtime.</span>
|
||||
|
@ -1439,6 +1624,7 @@
|
|||
<span class='kw'>pub</span> <span class='kw'>struct</span> <span class='ident'>App</span><span class='op'><</span><span class='lifetime'>'a</span>, <span class='lifetime'>'v</span>, <span class='lifetime'>'ab</span>, <span class='lifetime'>'u</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'ar</span><span class='op'>></span> {
|
||||
<span class='comment'>// The name displayed to the user when showing version and help/usage information</span>
|
||||
<span class='ident'>name</span>: <span class='ident'>String</span>,
|
||||
<span class='ident'>name_slice</span>: <span class='kw-2'>&</span><span class='lifetime'>'ar</span> <span class='ident'>str</span>,
|
||||
<span class='comment'>// A string of author(s) if desired. Displayed when showing help/usage information</span>
|
||||
<span class='ident'>author</span>: <span class='prelude-ty'>Option</span><span class='op'><</span><span class='kw-2'>&</span><span class='lifetime'>'a</span> <span class='ident'>str</span><span class='op'>></span>,
|
||||
<span class='comment'>// The version displayed to the user</span>
|
||||
|
@ -1467,8 +1653,8 @@
|
|||
<span class='ident'>long_list</span>: <span class='ident'>HashSet</span><span class='op'><</span><span class='kw-2'>&</span><span class='lifetime'>'ar</span> <span class='ident'>str</span><span class='op'>></span>,
|
||||
<span class='ident'>blacklist</span>: <span class='ident'>HashSet</span><span class='op'><</span><span class='kw-2'>&</span><span class='lifetime'>'ar</span> <span class='ident'>str</span><span class='op'>></span>,
|
||||
<span class='ident'>usage_str</span>: <span class='prelude-ty'>Option</span><span class='op'><</span><span class='kw-2'>&</span><span class='lifetime'>'u</span> <span class='ident'>str</span><span class='op'>></span>,
|
||||
<span class='ident'>bin_name</span>: <span class='prelude-ty'>Option</span><span class='op'><</span><span class='ident'>String</span><span class='op'>></span>
|
||||
|
||||
<span class='ident'>bin_name</span>: <span class='prelude-ty'>Option</span><span class='op'><</span><span class='ident'>String</span><span class='op'>></span>,
|
||||
<span class='ident'>groups</span>: <span class='ident'>HashMap</span><span class='op'><</span><span class='kw-2'>&</span><span class='lifetime'>'ar</span> <span class='ident'>str</span>, <span class='ident'>ArgGroup</span><span class='op'><</span><span class='lifetime'>'ar</span>, <span class='lifetime'>'ar</span><span class='op'>>></span>
|
||||
}
|
||||
|
||||
<span class='kw'>impl</span><span class='op'><</span><span class='lifetime'>'a</span>, <span class='lifetime'>'v</span>, <span class='lifetime'>'ab</span>, <span class='lifetime'>'u</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'ar</span><span class='op'>></span> <span class='ident'>App</span><span class='op'><</span><span class='lifetime'>'a</span>, <span class='lifetime'>'v</span>, <span class='lifetime'>'ab</span>, <span class='lifetime'>'u</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'ar</span><span class='op'>></span>{
|
||||
|
@ -1484,9 +1670,10 @@
|
|||
<span class='doccomment'>/// let prog = App::new("myprog")</span>
|
||||
<span class='doccomment'>/// # .get_matches();</span>
|
||||
<span class='doccomment'>/// ```</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>new</span><span class='op'><</span><span class='lifetime'>'n</span><span class='op'>></span>(<span class='ident'>n</span>: <span class='kw-2'>&</span><span class='lifetime'>'n</span> <span class='ident'>str</span>) <span class='op'>-></span> <span class='ident'>App</span><span class='op'><</span><span class='lifetime'>'a</span>, <span class='lifetime'>'v</span>, <span class='lifetime'>'ab</span>, <span class='lifetime'>'u</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'ar</span><span class='op'>></span> {
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>new</span>(<span class='ident'>n</span>: <span class='kw-2'>&</span><span class='lifetime'>'ar</span> <span class='ident'>str</span>) <span class='op'>-></span> <span class='ident'>App</span><span class='op'><</span><span class='lifetime'>'a</span>, <span class='lifetime'>'v</span>, <span class='lifetime'>'ab</span>, <span class='lifetime'>'u</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'ar</span><span class='op'>></span> {
|
||||
<span class='ident'>App</span> {
|
||||
<span class='ident'>name</span>: <span class='ident'>n</span>.<span class='ident'>to_owned</span>(),
|
||||
<span class='ident'>name_slice</span>: <span class='ident'>n</span>,
|
||||
<span class='ident'>author</span>: <span class='prelude-val'>None</span>,
|
||||
<span class='ident'>about</span>: <span class='prelude-val'>None</span>,
|
||||
<span class='ident'>more_help</span>: <span class='prelude-val'>None</span>,
|
||||
|
@ -1508,6 +1695,7 @@
|
|||
<span class='ident'>usage_str</span>: <span class='prelude-val'>None</span>,
|
||||
<span class='ident'>blacklist</span>: <span class='ident'>HashSet</span>::<span class='ident'>new</span>(),
|
||||
<span class='ident'>bin_name</span>: <span class='prelude-val'>None</span>,
|
||||
<span class='ident'>groups</span>: <span class='ident'>HashMap</span>::<span class='ident'>new</span>(),
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1626,13 +1814,21 @@
|
|||
<span class='doccomment'>/// ```</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>arg</span>(<span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>a</span>: <span class='ident'>Arg</span><span class='op'><</span><span class='lifetime'>'ar</span>, <span class='lifetime'>'ar</span>, <span class='lifetime'>'ar</span>, <span class='lifetime'>'ar</span>, <span class='lifetime'>'ar</span>, <span class='lifetime'>'ar</span><span class='op'>></span>) <span class='op'>-></span> <span class='ident'>App</span><span class='op'><</span><span class='lifetime'>'a</span>, <span class='lifetime'>'v</span>, <span class='lifetime'>'ab</span>, <span class='lifetime'>'u</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'ar</span><span class='op'>></span> {
|
||||
<span class='kw'>if</span> <span class='self'>self</span>.<span class='ident'>arg_list</span>.<span class='ident'>contains</span>(<span class='ident'>a</span>.<span class='ident'>name</span>) {
|
||||
<span class='macro'>panic</span><span class='macro'>!</span>(<span class='string'>"Argument name must be unique, \"{}\" is already in use"</span>, <span class='ident'>a</span>.<span class='ident'>name</span>);
|
||||
<span class='macro'>panic</span><span class='macro'>!</span>(<span class='string'>"Argument name must be unique\n\n\t\"{}\" is already in use"</span>, <span class='ident'>a</span>.<span class='ident'>name</span>);
|
||||
} <span class='kw'>else</span> {
|
||||
<span class='self'>self</span>.<span class='ident'>arg_list</span>.<span class='ident'>insert</span>(<span class='ident'>a</span>.<span class='ident'>name</span>);
|
||||
}
|
||||
<span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='ident'>grp</span>) <span class='op'>=</span> <span class='ident'>a</span>.<span class='ident'>group</span> {
|
||||
<span class='kw'>let</span> <span class='ident'>ag</span> <span class='op'>=</span> <span class='self'>self</span>.<span class='ident'>groups</span>.<span class='ident'>entry</span>(<span class='ident'>grp</span>).<span class='ident'>or_insert</span>(<span class='ident'>ArgGroup</span>::<span class='ident'>with_name</span>(<span class='ident'>grp</span>));
|
||||
<span class='ident'>ag</span>.<span class='ident'>args</span>.<span class='ident'>insert</span>(<span class='ident'>a</span>.<span class='ident'>name</span>);
|
||||
<span class='comment'>// Leaving this commented out for now...I'm not sure if having a required argument in</span>
|
||||
<span class='comment'>// a in required group is bad...It has it's uses</span>
|
||||
<span class='comment'>// assert!(!a.required, </span>
|
||||
<span class='comment'>// format!("Arguments may not be required AND part of a required group\n\n\t{} is required and also part of the {} group\n\n\tEither remove the requirement from the group, or the argument.", a.name, grp));</span>
|
||||
}
|
||||
<span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='ident'>s</span>) <span class='op'>=</span> <span class='ident'>a</span>.<span class='ident'>short</span> {
|
||||
<span class='kw'>if</span> <span class='self'>self</span>.<span class='ident'>short_list</span>.<span class='ident'>contains</span>(<span class='kw-2'>&</span><span class='ident'>s</span>) {
|
||||
<span class='macro'>panic</span><span class='macro'>!</span>(<span class='string'>"Argument short must be unique, -{} is already in use"</span>, <span class='ident'>s</span>);
|
||||
<span class='macro'>panic</span><span class='macro'>!</span>(<span class='string'>"Argument short must be unique\n\n\t-{} is already in use"</span>, <span class='ident'>s</span>);
|
||||
} <span class='kw'>else</span> {
|
||||
<span class='self'>self</span>.<span class='ident'>short_list</span>.<span class='ident'>insert</span>(<span class='ident'>s</span>);
|
||||
}
|
||||
|
@ -1644,7 +1840,7 @@
|
|||
}
|
||||
<span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='ident'>l</span>) <span class='op'>=</span> <span class='ident'>a</span>.<span class='ident'>long</span> {
|
||||
<span class='kw'>if</span> <span class='self'>self</span>.<span class='ident'>long_list</span>.<span class='ident'>contains</span>(<span class='ident'>l</span>) {
|
||||
<span class='macro'>panic</span><span class='macro'>!</span>(<span class='string'>"Argument long must be unique, --{} is already in use"</span>, <span class='ident'>l</span>);
|
||||
<span class='macro'>panic</span><span class='macro'>!</span>(<span class='string'>"Argument long must be unique\n\n\t--{} is already in use"</span>, <span class='ident'>l</span>);
|
||||
} <span class='kw'>else</span> {
|
||||
<span class='self'>self</span>.<span class='ident'>long_list</span>.<span class='ident'>insert</span>(<span class='ident'>l</span>);
|
||||
}
|
||||
|
@ -1665,10 +1861,10 @@
|
|||
}
|
||||
|
||||
<span class='kw'>if</span> <span class='self'>self</span>.<span class='ident'>positionals_idx</span>.<span class='ident'>contains_key</span>(<span class='kw-2'>&</span><span class='ident'>i</span>) {
|
||||
<span class='macro'>panic</span><span class='macro'>!</span>(<span class='string'>"Argument \"{}\" has the same index as another positional argument"</span>, <span class='ident'>a</span>.<span class='ident'>name</span>);
|
||||
<span class='macro'>panic</span><span class='macro'>!</span>(<span class='string'>"Argument \"{}\" has the same index as another positional argument\n\n\tPerhaps try .multiple(true) to allow one positional argument to take multiple values"</span>, <span class='ident'>a</span>.<span class='ident'>name</span>);
|
||||
}
|
||||
<span class='kw'>if</span> <span class='ident'>a</span>.<span class='ident'>takes_value</span> {
|
||||
<span class='macro'>panic</span><span class='macro'>!</span>(<span class='string'>"Argument \"{}\" has conflicting requirements, both index() and takes_value(true) were supplied"</span>, <span class='ident'>a</span>.<span class='ident'>name</span>);
|
||||
<span class='macro'>panic</span><span class='macro'>!</span>(<span class='string'>"Argument \"{}\" has conflicting requirements, both index() and takes_value(true) were supplied\n\n\tArguments with an index automatically take a value, you do not need to specify it manually"</span>, <span class='ident'>a</span>.<span class='ident'>name</span>);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1850,6 +2046,106 @@
|
|||
<span class='self'>self</span>
|
||||
}
|
||||
|
||||
<span class='doccomment'>/// Adds an ArgGroup to the application. ArgGroups are a family of related arguments. By </span>
|
||||
<span class='doccomment'>/// placing them in a logical group, you make easier requirement and exclusion rules. For </span>
|
||||
<span class='doccomment'>/// instance, you can make an ArgGroup required, this means that one (and *only* one) argument</span>
|
||||
<span class='doccomment'>/// from that group must be present. Using more than one argument from an ArgGroup causes a </span>
|
||||
<span class='doccomment'>/// failure (graceful exit).</span>
|
||||
<span class='doccomment'>/// </span>
|
||||
<span class='doccomment'>/// You can also do things such as name an ArgGroup as a confliction, meaning any of the</span>
|
||||
<span class='doccomment'>/// arguments that belong to that group will cause a failure if present.</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>/// Perhaps the most common use of ArgGroups is to require one and *only* one argument to be </span>
|
||||
<span class='doccomment'>/// present out of a given set. For example, lets say that you were building an application</span>
|
||||
<span class='doccomment'>/// where one could set a given version number by supplying a string using an option argument,</span>
|
||||
<span class='doccomment'>/// such as `--set-ver v1.2.3`, you also wanted to support automatically using a previous</span>
|
||||
<span class='doccomment'>/// version numer and simply incrementing one of the three numbers, so you create three flags</span>
|
||||
<span class='doccomment'>/// `--major`, `--minor`, and `--patch`. All of these arguments shouldn't be used at one time</span>
|
||||
<span class='doccomment'>/// but perhaps you want to specify that *at least one* of them is used. You can create a</span>
|
||||
<span class='doccomment'>/// group</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>/// # Example</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>/// ```no_run</span>
|
||||
<span class='doccomment'>/// # use clap::{App, ArgGroup};</span>
|
||||
<span class='doccomment'>/// # let _ = App::new("app")</span>
|
||||
<span class='doccomment'>/// .args_from_usage("--set-ver [ver] 'set the version manually'</span>
|
||||
<span class='doccomment'>/// --major 'auto increase major'</span>
|
||||
<span class='doccomment'>/// --minor 'auto increase minor'</span>
|
||||
<span class='doccomment'>/// --patch 'auto increase patch")</span>
|
||||
<span class='doccomment'>/// .arg_group(ArgGroup::with_name("vers")</span>
|
||||
<span class='doccomment'>/// .add_all(vec!["ver", "major", "minor","patch"])</span>
|
||||
<span class='doccomment'>/// .required(true))</span>
|
||||
<span class='doccomment'>/// # .get_matches();</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>arg_group</span>(<span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>group</span>: <span class='ident'>ArgGroup</span><span class='op'><</span><span class='lifetime'>'ar</span>, <span class='lifetime'>'ar</span><span class='op'>></span>) <span class='op'>-></span> <span class='ident'>App</span><span class='op'><</span><span class='lifetime'>'a</span>, <span class='lifetime'>'v</span>, <span class='lifetime'>'ab</span>, <span class='lifetime'>'u</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'ar</span><span class='op'>></span> {
|
||||
<span class='kw'>if</span> <span class='ident'>group</span>.<span class='ident'>required</span> {
|
||||
<span class='self'>self</span>.<span class='ident'>required</span>.<span class='ident'>insert</span>(<span class='ident'>group</span>.<span class='ident'>name</span>);
|
||||
<span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='kw-2'>ref</span> <span class='ident'>reqs</span>) <span class='op'>=</span> <span class='ident'>group</span>.<span class='ident'>requires</span> {
|
||||
<span class='kw'>for</span> <span class='ident'>r</span> <span class='kw'>in</span> <span class='ident'>reqs</span> {
|
||||
<span class='self'>self</span>.<span class='ident'>required</span>.<span class='ident'>insert</span>(<span class='ident'>r</span>);
|
||||
}
|
||||
}
|
||||
<span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='kw-2'>ref</span> <span class='ident'>bl</span>) <span class='op'>=</span> <span class='ident'>group</span>.<span class='ident'>conflicts</span> {
|
||||
<span class='kw'>for</span> <span class='ident'>b</span> <span class='kw'>in</span> <span class='ident'>bl</span> {
|
||||
<span class='self'>self</span>.<span class='ident'>blacklist</span>.<span class='ident'>insert</span>(<span class='ident'>b</span>);
|
||||
}
|
||||
}
|
||||
}
|
||||
<span class='kw'>let</span> <span class='kw-2'>mut</span> <span class='ident'>found</span> <span class='op'>=</span> <span class='boolval'>false</span>;
|
||||
<span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='kw-2'>ref</span> <span class='kw-2'>mut</span> <span class='ident'>grp</span>) <span class='op'>=</span> <span class='self'>self</span>.<span class='ident'>groups</span>.<span class='ident'>get_mut</span>(<span class='ident'>group</span>.<span class='ident'>name</span>) {
|
||||
<span class='kw'>for</span> <span class='ident'>a</span> <span class='kw'>in</span> <span class='ident'>group</span>.<span class='ident'>args</span>.<span class='ident'>iter</span>() {
|
||||
<span class='ident'>grp</span>.<span class='ident'>args</span>.<span class='ident'>insert</span>(<span class='ident'>a</span>);
|
||||
}
|
||||
<span class='ident'>grp</span>.<span class='ident'>requires</span> <span class='op'>=</span> <span class='ident'>group</span>.<span class='ident'>requires</span>.<span class='ident'>clone</span>();
|
||||
<span class='ident'>grp</span>.<span class='ident'>conflicts</span> <span class='op'>=</span> <span class='ident'>group</span>.<span class='ident'>conflicts</span>.<span class='ident'>clone</span>();
|
||||
<span class='ident'>grp</span>.<span class='ident'>required</span> <span class='op'>=</span> <span class='ident'>group</span>.<span class='ident'>required</span>;
|
||||
<span class='ident'>found</span> <span class='op'>=</span> <span class='boolval'>true</span>;
|
||||
}
|
||||
<span class='kw'>if</span> <span class='op'>!</span><span class='ident'>found</span> {
|
||||
<span class='self'>self</span>.<span class='ident'>groups</span>.<span class='ident'>insert</span>(<span class='ident'>group</span>.<span class='ident'>name</span>, <span class='ident'>group</span>);
|
||||
}
|
||||
<span class='self'>self</span>
|
||||
}
|
||||
|
||||
<span class='doccomment'>/// Adds a ArgGroups to the application. ArgGroups are a family of related arguments. By </span>
|
||||
<span class='doccomment'>/// placing them in a logical group, you make easier requirement and exclusion rules. For </span>
|
||||
<span class='doccomment'>/// instance, you can make an ArgGroup required, this means that one (and *only* one) argument</span>
|
||||
<span class='doccomment'>/// from that group must be present. Using more than one argument from an ArgGroup causes a </span>
|
||||
<span class='doccomment'>/// failure (graceful exit).</span>
|
||||
<span class='doccomment'>/// </span>
|
||||
<span class='doccomment'>/// You can also do things such as name an ArgGroup as a confliction, meaning any of the</span>
|
||||
<span class='doccomment'>/// arguments that belong to that group will cause a failure if present.</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>/// Perhaps the most common use of ArgGroups is to require one and *only* one argument to be </span>
|
||||
<span class='doccomment'>/// present out of a given set. For example, lets say that you were building an application</span>
|
||||
<span class='doccomment'>/// where one could set a given version number by supplying a string using an option argument,</span>
|
||||
<span class='doccomment'>/// such as `--set-ver v1.2.3`, you also wanted to support automatically using a previous</span>
|
||||
<span class='doccomment'>/// version numer and simply incrementing one of the three numbers, so you create three flags</span>
|
||||
<span class='doccomment'>/// `--major`, `--minor`, and `--patch`. All of these arguments shouldn't be used at one time</span>
|
||||
<span class='doccomment'>/// but perhaps you want to specify that *at least one* of them is used. You can create a</span>
|
||||
<span class='doccomment'>/// group</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>/// # Example</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>/// ```no_run</span>
|
||||
<span class='doccomment'>/// # use clap::{App, ArgGroup};</span>
|
||||
<span class='doccomment'>/// # let _ = App::new("app")</span>
|
||||
<span class='doccomment'>/// .args_from_usage("--set-ver [ver] 'set the version manually'</span>
|
||||
<span class='doccomment'>/// --major 'auto increase major'</span>
|
||||
<span class='doccomment'>/// --minor 'auto increase minor'</span>
|
||||
<span class='doccomment'>/// --patch 'auto increase patch")</span>
|
||||
<span class='doccomment'>/// .arg_group(ArgGroup::with_name("vers")</span>
|
||||
<span class='doccomment'>/// .add_all(vec!["ver", "major", "minor","patch"])</span>
|
||||
<span class='doccomment'>/// .required(true))</span>
|
||||
<span class='doccomment'>/// # .get_matches();</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>arg_groups</span>(<span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>groups</span>: <span class='ident'>Vec</span><span class='op'><</span><span class='ident'>ArgGroup</span><span class='op'><</span><span class='lifetime'>'ar</span>, <span class='lifetime'>'ar</span><span class='op'>>></span>) <span class='op'>-></span> <span class='ident'>App</span><span class='op'><</span><span class='lifetime'>'a</span>, <span class='lifetime'>'v</span>, <span class='lifetime'>'ab</span>, <span class='lifetime'>'u</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'ar</span><span class='op'>></span> {
|
||||
<span class='kw'>for</span> <span class='ident'>g</span> <span class='kw'>in</span> <span class='ident'>groups</span> {
|
||||
<span class='self'>self</span> <span class='op'>=</span> <span class='self'>self</span>.<span class='ident'>arg_group</span>(<span class='ident'>g</span>);
|
||||
}
|
||||
<span class='self'>self</span>
|
||||
}
|
||||
|
||||
<span class='doccomment'>/// Adds a subcommand to the list of valid possibilties. Subcommands are effectively sub apps,</span>
|
||||
<span class='doccomment'>/// because they can contain their own arguments, subcommands, version, usage, etc. They also</span>
|
||||
|
@ -1908,6 +2204,7 @@
|
|||
<span class='kw'>let</span> <span class='ident'>pos</span> <span class='op'>=</span> <span class='op'>!</span><span class='self'>self</span>.<span class='ident'>positionals_idx</span>.<span class='ident'>is_empty</span>();
|
||||
<span class='kw'>let</span> <span class='ident'>opts</span> <span class='op'>=</span> <span class='op'>!</span><span class='self'>self</span>.<span class='ident'>opts</span>.<span class='ident'>is_empty</span>();
|
||||
<span class='kw'>let</span> <span class='ident'>subcmds</span> <span class='op'>=</span> <span class='op'>!</span><span class='self'>self</span>.<span class='ident'>subcommands</span>.<span class='ident'>is_empty</span>();
|
||||
<span class='kw'>let</span> <span class='ident'>groups</span> <span class='op'>=</span> <span class='op'>!</span><span class='self'>self</span>.<span class='ident'>groups</span>.<span class='ident'>is_empty</span>();
|
||||
<span class='kw'>let</span> <span class='kw-2'>mut</span> <span class='ident'>num_req_pos</span> <span class='op'>=</span> <span class='number'>0</span>;
|
||||
<span class='kw'>let</span> <span class='kw-2'>mut</span> <span class='ident'>matched_pos_reqs</span> <span class='op'>=</span> <span class='ident'>HashSet</span>::<span class='ident'>new</span>();
|
||||
<span class='comment'>// If it's required we also need to ensure all previous positionals are required too</span>
|
||||
|
@ -1925,11 +2222,7 @@
|
|||
|
||||
<span class='kw'>let</span> <span class='kw-2'>mut</span> <span class='ident'>req_pos</span> <span class='op'>=</span> <span class='self'>self</span>.<span class='ident'>positionals_idx</span>.<span class='ident'>values</span>().<span class='ident'>filter_map</span>(<span class='op'>|</span><span class='kw-2'>ref</span> <span class='ident'>x</span><span class='op'>|</span> <span class='kw'>if</span> <span class='ident'>x</span>.<span class='ident'>required</span> <span class='op'>||</span> <span class='ident'>matched_pos_reqs</span>.<span class='ident'>contains</span>(<span class='ident'>x</span>.<span class='ident'>name</span>) {
|
||||
<span class='ident'>num_req_pos</span> <span class='op'>+=</span> <span class='number'>1</span>;
|
||||
<span class='kw'>if</span> <span class='ident'>x</span>.<span class='ident'>multiple</span> {
|
||||
<span class='prelude-val'>Some</span>(<span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"<{}>..."</span>, <span class='ident'>x</span>.<span class='ident'>name</span>))
|
||||
} <span class='kw'>else</span> {
|
||||
<span class='prelude-val'>Some</span>(<span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"<{}>"</span>, <span class='ident'>x</span>.<span class='ident'>name</span>))
|
||||
}
|
||||
<span class='prelude-val'>Some</span>(<span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"{}"</span>, <span class='ident'>x</span>))
|
||||
} <span class='kw'>else</span> {
|
||||
<span class='prelude-val'>None</span>
|
||||
} )
|
||||
|
@ -1942,16 +2235,10 @@
|
|||
}<span class='kw'>else</span> {
|
||||
<span class='prelude-val'>None</span>
|
||||
})
|
||||
.<span class='ident'>fold</span>(<span class='ident'>String</span>::<span class='ident'>with_capacity</span>(<span class='number'>50</span>), <span class='op'>|</span><span class='ident'>acc</span>, <span class='kw-2'>ref</span> <span class='ident'>o</span><span class='op'>|</span> <span class='ident'>acc</span> <span class='op'>+</span> <span class='kw-2'>&</span><span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"-{}{} "</span>,<span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='ident'>l</span>) <span class='op'>=</span> <span class='ident'>o</span>.<span class='ident'>long</span> {
|
||||
<span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"-{}="</span>, <span class='ident'>l</span>)
|
||||
} <span class='kw'>else</span> {
|
||||
<span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"{} "</span>,<span class='ident'>o</span>.<span class='ident'>short</span>.<span class='ident'>unwrap</span>())
|
||||
},<span class='ident'>o</span>.<span class='ident'>name</span>));
|
||||
.<span class='ident'>fold</span>(<span class='ident'>String</span>::<span class='ident'>with_capacity</span>(<span class='number'>50</span>), <span class='op'>|</span><span class='ident'>acc</span>, <span class='kw-2'>ref</span> <span class='ident'>o</span><span class='op'>|</span> <span class='ident'>acc</span> <span class='op'>+</span> <span class='kw-2'>&</span><span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"{} "</span>,<span class='ident'>o</span>));
|
||||
<span class='ident'>req_opts</span>.<span class='ident'>shrink_to_fit</span>();
|
||||
|
||||
<span class='comment'>// usage.push_str(tab);</span>
|
||||
<span class='ident'>usage</span>.<span class='ident'>push_str</span>(<span class='kw-2'>&</span><span class='self'>self</span>.<span class='ident'>bin_name</span>.<span class='ident'>clone</span>().<span class='ident'>unwrap_or</span>(<span class='self'>self</span>.<span class='ident'>name</span>.<span class='ident'>clone</span>())[..]);
|
||||
<span class='comment'>// usage.push_str(tab);</span>
|
||||
<span class='kw'>if</span> <span class='ident'>flags</span> {
|
||||
<span class='ident'>usage</span>.<span class='ident'>push_str</span>(<span class='string'>" [FLAGS]"</span>);
|
||||
}
|
||||
|
@ -1975,6 +2262,30 @@
|
|||
<span class='ident'>req_pos</span>
|
||||
} ).<span class='ident'>unwrap_or_else</span>(<span class='op'>|</span><span class='ident'>e</span><span class='op'>|</span> <span class='self'>self</span>.<span class='ident'>report_error</span>(<span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"internal error: {}"</span>, <span class='ident'>e</span>),<span class='boolval'>false</span>,<span class='boolval'>true</span>));
|
||||
}
|
||||
<span class='kw'>if</span> <span class='ident'>groups</span> {
|
||||
<span class='kw'>let</span> <span class='ident'>req_grps</span> <span class='op'>=</span> <span class='self'>self</span>.<span class='ident'>groups</span>.<span class='ident'>values</span>() <span class='comment'>// Iterator<Item=ArgGroup></span>
|
||||
.<span class='ident'>filter_map</span>(<span class='op'>|</span><span class='ident'>g</span><span class='op'>|</span> <span class='kw'>if</span> <span class='ident'>g</span>.<span class='ident'>required</span> {<span class='prelude-val'>Some</span>(<span class='ident'>g</span>.<span class='ident'>args</span>.<span class='ident'>clone</span>())} <span class='kw'>else</span> {<span class='prelude-val'>None</span>}) <span class='comment'>// Iterator<Item=HashSet<&str>></span>
|
||||
.<span class='ident'>map</span>(<span class='op'>|</span><span class='ident'>hs</span><span class='op'>|</span> <span class='ident'>hs</span>.<span class='ident'>into_iter</span>().<span class='ident'>collect</span>::<span class='op'><</span><span class='ident'>Vec</span><span class='op'><</span>_<span class='op'>>></span>() ) <span class='comment'>// Iterator<Item=Vec<&str>></span>
|
||||
.<span class='ident'>fold</span>(<span class='macro'>vec</span><span class='macro'>!</span>[], <span class='op'>|</span><span class='ident'>acc</span>, <span class='ident'>n</span><span class='op'>|</span> <span class='ident'>acc</span> <span class='op'>+</span> <span class='kw-2'>&</span><span class='ident'>n</span>[..]) <span class='comment'>// Vec<&str></span>
|
||||
.<span class='ident'>iter</span>() <span class='comment'>// Iterator<Item=&str></span>
|
||||
.<span class='ident'>fold</span>(<span class='ident'>String</span>::<span class='ident'>new</span>(), <span class='op'>|</span><span class='ident'>acc</span>, <span class='ident'>n</span><span class='op'>|</span> {
|
||||
<span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='kw-2'>ref</span> <span class='ident'>o</span>) <span class='op'>=</span> <span class='self'>self</span>.<span class='ident'>opts</span>.<span class='ident'>get</span>(<span class='ident'>n</span>) {
|
||||
<span class='ident'>acc</span> <span class='op'>+</span> <span class='kw-2'>&</span><span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"{}|"</span>, <span class='ident'>o</span>)[..]
|
||||
} <span class='kw'>else</span> <span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='kw-2'>ref</span> <span class='ident'>f</span>) <span class='op'>=</span> <span class='self'>self</span>.<span class='ident'>flags</span>.<span class='ident'>get</span>(<span class='ident'>n</span>) {
|
||||
<span class='ident'>acc</span> <span class='op'>+</span> <span class='kw-2'>&</span><span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"{}|"</span>, <span class='ident'>f</span>)[..]
|
||||
} <span class='kw'>else</span> {
|
||||
<span class='ident'>acc</span> <span class='op'>+</span> <span class='kw-2'>&</span><span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"{}|"</span>, <span class='kw'>match</span> <span class='self'>self</span>.<span class='ident'>positionals_idx</span>.<span class='ident'>values</span>().<span class='ident'>rev</span>().<span class='ident'>filter_map</span>(<span class='op'>|</span><span class='kw-2'>ref</span> <span class='ident'>p</span><span class='op'>|</span> <span class='kw'>if</span> <span class='kw-2'>&</span><span class='ident'>p</span>.<span class='ident'>name</span> <span class='op'>==</span> <span class='ident'>n</span> {<span class='prelude-val'>Some</span>(<span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"{}"</span>, <span class='ident'>p</span>))}<span class='kw'>else</span>{<span class='prelude-val'>None</span>}).<span class='ident'>next</span>(){
|
||||
<span class='prelude-val'>Some</span>(<span class='ident'>name</span>) <span class='op'>=></span> <span class='ident'>name</span>,
|
||||
<span class='prelude-val'>None</span> <span class='op'>=></span> <span class='macro'>panic</span><span class='macro'>!</span>(<span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"Error parsing a required group which contains argument \"{}\"\n\n\tArgument couldn't be found. Check the arguments settings."</span>, <span class='ident'>n</span>))
|
||||
})[..]
|
||||
}
|
||||
});
|
||||
|
||||
<span class='comment'>// There may be no required groups, so we check</span>
|
||||
<span class='kw'>if</span> <span class='ident'>req_grps</span>.<span class='ident'>len</span>() <span class='op'>></span> <span class='number'>0</span> {
|
||||
<span class='macro'>write</span><span class='macro'>!</span>(<span class='kw-2'>&</span><span class='kw-2'>mut</span> <span class='ident'>usage</span>, <span class='string'>" [{}]"</span>, <span class='kw-2'>&</span><span class='ident'>req_grps</span>[..<span class='ident'>req_grps</span>.<span class='ident'>len</span>() <span class='op'>-</span> <span class='number'>1</span>]).<span class='ident'>unwrap_or_else</span>(<span class='op'>|</span><span class='ident'>e</span><span class='op'>|</span> <span class='self'>self</span>.<span class='ident'>report_error</span>(<span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"internal error: {}"</span>, <span class='ident'>e</span>),<span class='boolval'>false</span>,<span class='boolval'>true</span>));
|
||||
}
|
||||
}
|
||||
<span class='kw'>if</span> <span class='ident'>subcmds</span> {
|
||||
<span class='ident'>usage</span>.<span class='ident'>push_str</span>(<span class='string'>" [SUBCOMMANDS]"</span>);
|
||||
}
|
||||
|
@ -2003,21 +2314,27 @@
|
|||
<span class='kw'>let</span> <span class='kw-2'>mut</span> <span class='ident'>longest_flag</span> <span class='op'>=</span> <span class='number'>0</span>;
|
||||
<span class='kw'>for</span> <span class='ident'>fl</span> <span class='kw'>in</span> <span class='self'>self</span>.<span class='ident'>flags</span>
|
||||
.<span class='ident'>values</span>()
|
||||
.<span class='ident'>filter_map</span>(<span class='op'>|</span><span class='kw-2'>ref</span> <span class='ident'>f</span><span class='op'>|</span> <span class='ident'>f</span>.<span class='ident'>long</span>)
|
||||
.<span class='ident'>map</span>(<span class='op'>|</span><span class='kw-2'>ref</span> <span class='ident'>l</span><span class='op'>|</span> <span class='ident'>l</span>.<span class='ident'>len</span>() <span class='op'>+</span> <span class='number'>2</span>) {
|
||||
.<span class='ident'>filter</span>(<span class='op'>|</span><span class='kw-2'>ref</span> <span class='ident'>f</span><span class='op'>|</span> <span class='ident'>f</span>.<span class='ident'>long</span>.<span class='ident'>is_some</span>())
|
||||
<span class='comment'>// 2='--'</span>
|
||||
.<span class='ident'>map</span>(<span class='op'>|</span><span class='kw-2'>ref</span> <span class='ident'>a</span><span class='op'>|</span> <span class='ident'>a</span>.<span class='ident'>long</span>.<span class='ident'>unwrap</span>().<span class='ident'>len</span>() <span class='op'>+</span> <span class='number'>2</span>) {
|
||||
<span class='kw'>if</span> <span class='ident'>fl</span> <span class='op'>></span> <span class='ident'>longest_flag</span> { <span class='ident'>longest_flag</span> <span class='op'>=</span> <span class='ident'>fl</span>; }
|
||||
}
|
||||
<span class='kw'>let</span> <span class='kw-2'>mut</span> <span class='ident'>longest_opt</span><span class='op'>=</span> <span class='number'>0</span>;
|
||||
<span class='kw'>for</span> <span class='ident'>ol</span> <span class='kw'>in</span> <span class='self'>self</span>.<span class='ident'>opts</span>
|
||||
.<span class='ident'>values</span>()
|
||||
.<span class='ident'>filter_map</span>(<span class='op'>|</span><span class='kw-2'>ref</span> <span class='ident'>f</span><span class='op'>|</span> <span class='kw'>if</span> <span class='ident'>f</span>.<span class='ident'>long</span>.<span class='ident'>is_some</span>() {<span class='kw'>let</span> <span class='ident'>mult</span> <span class='op'>=</span> <span class='kw'>if</span> <span class='ident'>f</span>.<span class='ident'>multiple</span> { <span class='number'>3</span> } <span class='kw'>else</span> { <span class='number'>0</span> }; <span class='prelude-val'>Some</span>(<span class='ident'>f</span>.<span class='ident'>long</span>.<span class='ident'>unwrap</span>().<span class='ident'>len</span>() <span class='op'>+</span> <span class='ident'>mult</span> <span class='op'>+</span> <span class='ident'>f</span>.<span class='ident'>name</span>.<span class='ident'>len</span>() <span class='op'>+</span> <span class='number'>3</span>)}<span class='kw'>else</span> {<span class='prelude-val'>None</span>}) {
|
||||
.<span class='ident'>filter</span>(<span class='op'>|</span><span class='kw-2'>ref</span> <span class='ident'>o</span><span class='op'>|</span> <span class='ident'>o</span>.<span class='ident'>long</span>.<span class='ident'>is_some</span>())
|
||||
<span class='comment'>// 3='...'</span>
|
||||
<span class='comment'>// 5='-- <>'</span>
|
||||
.<span class='ident'>map</span>(<span class='op'>|</span><span class='kw-2'>ref</span> <span class='ident'>a</span><span class='op'>|</span> <span class='kw'>if</span> <span class='ident'>a</span>.<span class='ident'>multiple</span> { <span class='number'>3</span> } <span class='kw'>else</span> { <span class='number'>0</span> } <span class='op'>+</span> <span class='ident'>a</span>.<span class='ident'>long</span>.<span class='ident'>unwrap</span>().<span class='ident'>len</span>() <span class='op'>+</span> <span class='number'>5</span> <span class='op'>+</span> <span class='ident'>a</span>.<span class='ident'>name</span>.<span class='ident'>len</span>() ) {
|
||||
<span class='kw'>if</span> <span class='ident'>ol</span> <span class='op'>></span> <span class='ident'>longest_opt</span> {<span class='ident'>longest_opt</span> <span class='op'>=</span> <span class='ident'>ol</span>;}
|
||||
}
|
||||
<span class='kw'>if</span> <span class='ident'>longest_opt</span> <span class='op'>==</span> <span class='number'>0</span> {
|
||||
<span class='kw'>for</span> <span class='ident'>ol</span> <span class='kw'>in</span> <span class='self'>self</span>.<span class='ident'>opts</span>
|
||||
.<span class='ident'>values</span>()
|
||||
.<span class='ident'>map</span>(<span class='op'>|</span><span class='kw-2'>ref</span> <span class='ident'>f</span><span class='op'>|</span>
|
||||
<span class='ident'>f</span>.<span class='ident'>name</span>.<span class='ident'>len</span>() <span class='op'>+</span> <span class='kw'>if</span> <span class='ident'>f</span>.<span class='ident'>multiple</span> { <span class='number'>3</span> } <span class='kw'>else</span> { <span class='number'>0</span> } <span class='op'>+</span> <span class='number'>2</span> ){
|
||||
.<span class='ident'>filter</span>(<span class='op'>|</span><span class='kw-2'>ref</span> <span class='ident'>o</span><span class='op'>|</span> <span class='ident'>o</span>.<span class='ident'>short</span>.<span class='ident'>is_some</span>())
|
||||
<span class='comment'>// 3='...'</span>
|
||||
<span class='comment'>// 4='- <>'</span>
|
||||
.<span class='ident'>map</span>(<span class='op'>|</span><span class='kw-2'>ref</span> <span class='ident'>a</span><span class='op'>|</span> <span class='kw'>if</span> <span class='ident'>a</span>.<span class='ident'>multiple</span> { <span class='number'>3</span> } <span class='kw'>else</span> { <span class='number'>0</span> } <span class='op'>+</span> <span class='ident'>a</span>.<span class='ident'>name</span>.<span class='ident'>len</span>() <span class='op'>+</span> <span class='number'>4</span>) {
|
||||
<span class='kw'>if</span> <span class='ident'>ol</span> <span class='op'>></span> <span class='ident'>longest_opt</span> {<span class='ident'>longest_opt</span> <span class='op'>=</span> <span class='ident'>ol</span>;}
|
||||
}
|
||||
}
|
||||
|
@ -2057,11 +2374,11 @@
|
|||
<span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"{}--{}{}"</span>,
|
||||
<span class='kw'>if</span> <span class='ident'>v</span>.<span class='ident'>short</span>.<span class='ident'>is_some</span>() { <span class='string'>", "</span> } <span class='kw'>else</span> {<span class='string'>""</span>},
|
||||
<span class='ident'>l</span>,
|
||||
<span class='comment'>// +2 accounts for the ', ' +4 for tab = 6</span>
|
||||
<span class='comment'>// 2='--'</span>
|
||||
<span class='self'>self</span>.<span class='ident'>get_spaces</span>((<span class='ident'>longest_flag</span> <span class='op'>+</span> <span class='number'>4</span>) <span class='op'>-</span> (<span class='ident'>v</span>.<span class='ident'>long</span>.<span class='ident'>unwrap</span>().<span class='ident'>len</span>() <span class='op'>+</span> <span class='number'>2</span>)))
|
||||
} <span class='kw'>else</span> {
|
||||
<span class='comment'>// 6 is tab (4) + -- (2)</span>
|
||||
<span class='self'>self</span>.<span class='ident'>get_spaces</span>(<span class='ident'>longest_flag</span><span class='op'>+</span><span class='number'>6</span>).<span class='ident'>to_owned</span>()
|
||||
<span class='self'>self</span>.<span class='ident'>get_spaces</span>(<span class='ident'>longest_flag</span> <span class='op'>+</span> <span class='number'>6</span>).<span class='ident'>to_owned</span>()
|
||||
},
|
||||
<span class='ident'>v</span>.<span class='ident'>help</span>.<span class='ident'>unwrap_or</span>(<span class='ident'>tab</span>) );
|
||||
}
|
||||
|
@ -2072,22 +2389,19 @@
|
|||
<span class='kw'>for</span> <span class='ident'>v</span> <span class='kw'>in</span> <span class='self'>self</span>.<span class='ident'>opts</span>.<span class='ident'>values</span>() {
|
||||
<span class='comment'>// if it supports multiple we add '...' i.e. 3 to the name length</span>
|
||||
<span class='kw'>let</span> <span class='ident'>mult</span> <span class='op'>=</span> <span class='kw'>if</span> <span class='ident'>v</span>.<span class='ident'>multiple</span> { <span class='number'>3</span> } <span class='kw'>else</span> { <span class='number'>0</span> };
|
||||
<span class='comment'>// let long_len = if v.long.is_some() { v.long.unwrap().len() + 3}else{0};</span>
|
||||
<span class='comment'>// let mut needs_tab = false;</span>
|
||||
<span class='macro'>println</span><span class='macro'>!</span>(<span class='string'>"{}{}{}{}{}{}"</span>,<span class='ident'>tab</span>,
|
||||
<span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='ident'>s</span>) <span class='op'>=</span> <span class='ident'>v</span>.<span class='ident'>short</span>{<span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"-{}"</span>,<span class='ident'>s</span>)}<span class='kw'>else</span>{<span class='ident'>tab</span>.<span class='ident'>to_owned</span>()},
|
||||
<span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='ident'>l</span>) <span class='op'>=</span> <span class='ident'>v</span>.<span class='ident'>long</span> {
|
||||
<span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"{}--{}="</span>,
|
||||
<span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"{}--{} "</span>,
|
||||
<span class='kw'>if</span> <span class='ident'>v</span>.<span class='ident'>short</span>.<span class='ident'>is_some</span>() {<span class='string'>", "</span>} <span class='kw'>else</span> {<span class='string'>""</span>},<span class='ident'>l</span>)
|
||||
} <span class='kw'>else</span> {
|
||||
<span class='string'>" "</span>.<span class='ident'>to_owned</span>()
|
||||
},
|
||||
<span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"{}{}"</span>, <span class='ident'>v</span>.<span class='ident'>name</span>, <span class='kw'>if</span> <span class='ident'>v</span>.<span class='ident'>multiple</span>{<span class='string'>"..."</span>} <span class='kw'>else</span> {<span class='string'>""</span>}),
|
||||
<span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"<{}>{}"</span>, <span class='ident'>v</span>.<span class='ident'>name</span>, <span class='kw'>if</span> <span class='ident'>v</span>.<span class='ident'>multiple</span>{<span class='string'>"..."</span>} <span class='kw'>else</span> {<span class='string'>""</span>}),
|
||||
<span class='kw'>if</span> <span class='ident'>v</span>.<span class='ident'>long</span>.<span class='ident'>is_some</span>() {
|
||||
<span class='self'>self</span>.<span class='ident'>get_spaces</span>((<span class='ident'>longest_opt</span> <span class='op'>+</span> <span class='number'>4</span>) <span class='op'>-</span> (<span class='ident'>v</span>.<span class='ident'>long</span>.<span class='ident'>unwrap</span>().<span class='ident'>len</span>() <span class='op'>+</span> <span class='ident'>v</span>.<span class='ident'>name</span>.<span class='ident'>len</span>() <span class='op'>+</span> <span class='number'>2</span> <span class='op'>+</span> <span class='ident'>mult</span>))
|
||||
<span class='self'>self</span>.<span class='ident'>get_spaces</span>((<span class='ident'>longest_opt</span>) <span class='op'>-</span> (<span class='ident'>v</span>.<span class='ident'>long</span>.<span class='ident'>unwrap</span>().<span class='ident'>len</span>() <span class='op'>+</span> <span class='ident'>v</span>.<span class='ident'>name</span>.<span class='ident'>len</span>() <span class='op'>+</span> <span class='ident'>mult</span> <span class='op'>+</span> <span class='number'>1</span>))
|
||||
} <span class='kw'>else</span> {
|
||||
<span class='comment'>// 7 is '--=' (3) + tab (4)</span>
|
||||
<span class='self'>self</span>.<span class='ident'>get_spaces</span>((<span class='ident'>longest_opt</span> <span class='op'>+</span> <span class='number'>6</span>) <span class='op'>-</span> (<span class='ident'>v</span>.<span class='ident'>name</span>.<span class='ident'>len</span>() <span class='op'>+</span> <span class='ident'>mult</span>))
|
||||
<span class='self'>self</span>.<span class='ident'>get_spaces</span>((<span class='ident'>longest_opt</span> <span class='op'>+</span> <span class='number'>3</span>) <span class='op'>-</span> (<span class='ident'>v</span>.<span class='ident'>name</span>.<span class='ident'>len</span>() <span class='op'>+</span> <span class='ident'>mult</span>))
|
||||
},
|
||||
<span class='macro'>get_help</span><span class='macro'>!</span>(<span class='ident'>v</span>) );
|
||||
}
|
||||
|
@ -2123,7 +2437,6 @@
|
|||
}
|
||||
|
||||
<span class='comment'>// Used when spacing arguments and their help message when displaying help information</span>
|
||||
<span class='attribute'>#[<span class='ident'>inline</span>(<span class='ident'>always</span>)]</span>
|
||||
<span class='kw'>fn</span> <span class='ident'>get_spaces</span>(<span class='kw-2'>&</span><span class='self'>self</span>, <span class='ident'>num</span>: <span class='ident'>usize</span>) <span class='op'>-></span> <span class='kw-2'>&</span><span class='lifetime'>'static</span> <span class='ident'>str</span> {
|
||||
<span class='kw'>match</span> <span class='ident'>num</span> {
|
||||
<span class='number'>0</span> <span class='op'>=></span> <span class='string'>""</span>,
|
||||
|
@ -2183,7 +2496,7 @@
|
|||
|
||||
<span class='comment'>// Starts the parsing process. Called on top level parent app **ONLY** then recursively calls</span>
|
||||
<span class='comment'>// the real parsing function for subcommands</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>get_matches</span>(<span class='kw-2'>mut</span> <span class='self'>self</span>) <span class='op'>-></span> <span class='ident'>ArgMatches</span><span class='op'><</span><span class='lifetime'>'ar</span><span class='op'>></span> {
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>get_matches</span>(<span class='kw-2'>mut</span> <span class='self'>self</span>) <span class='op'>-></span> <span class='ident'>ArgMatches</span><span class='op'><</span><span class='lifetime'>'ar</span>, <span class='lifetime'>'ar</span><span class='op'>></span> {
|
||||
<span class='self'>self</span>.<span class='ident'>verify_positionals</span>();
|
||||
<span class='kw'>for</span> (_,<span class='ident'>sc</span>) <span class='kw'>in</span> <span class='self'>self</span>.<span class='ident'>subcommands</span>.<span class='ident'>iter_mut</span>() {
|
||||
<span class='ident'>sc</span>.<span class='ident'>verify_positionals</span>();
|
||||
|
@ -2242,7 +2555,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
<span class='kw'>fn</span> <span class='ident'>get_matches_from</span>(<span class='kw-2'>&</span><span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>matches</span>: <span class='kw-2'>&</span><span class='kw-2'>mut</span> <span class='ident'>ArgMatches</span><span class='op'><</span><span class='lifetime'>'ar</span><span class='op'>></span>, <span class='ident'>it</span>: <span class='kw-2'>&</span><span class='kw-2'>mut</span> <span class='ident'>IntoIter</span><span class='op'><</span><span class='ident'>String</span><span class='op'>></span>) {
|
||||
<span class='kw'>fn</span> <span class='ident'>get_matches_from</span>(<span class='kw-2'>&</span><span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>matches</span>: <span class='kw-2'>&</span><span class='kw-2'>mut</span> <span class='ident'>ArgMatches</span><span class='op'><</span><span class='lifetime'>'ar</span>, <span class='lifetime'>'ar</span><span class='op'>></span>, <span class='ident'>it</span>: <span class='kw-2'>&</span><span class='kw-2'>mut</span> <span class='ident'>IntoIter</span><span class='op'><</span><span class='ident'>String</span><span class='op'>></span>) {
|
||||
<span class='self'>self</span>.<span class='ident'>create_help_and_version</span>();
|
||||
|
||||
<span class='kw'>let</span> <span class='kw-2'>mut</span> <span class='ident'>pos_only</span> <span class='op'>=</span> <span class='boolval'>false</span>;
|
||||
|
@ -2317,7 +2630,7 @@
|
|||
<span class='comment'>// let mut req_pos_from_name = None;</span>
|
||||
<span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='ident'>p</span>) <span class='op'>=</span> <span class='self'>self</span>.<span class='ident'>positionals_idx</span>.<span class='ident'>get</span>(<span class='kw-2'>&</span><span class='ident'>pos_counter</span>) {
|
||||
<span class='kw'>if</span> <span class='self'>self</span>.<span class='ident'>blacklist</span>.<span class='ident'>contains</span>(<span class='ident'>p</span>.<span class='ident'>name</span>) {
|
||||
<span class='self'>self</span>.<span class='ident'>report_error</span>(<span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"The argument \"{}\" cannot be used with one or more of the other specified arguments"</span>, <span class='ident'>arg</span>),
|
||||
<span class='self'>self</span>.<span class='ident'>report_error</span>(<span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"The argument \"{}\" cannot be used with one or more of the other specified arguments"</span>, <span class='ident'>p</span>),
|
||||
<span class='boolval'>true</span>, <span class='boolval'>true</span>);
|
||||
}
|
||||
|
||||
|
@ -2326,8 +2639,8 @@
|
|||
<span class='kw'>if</span> <span class='op'>!</span><span class='ident'>p_vals</span>.<span class='ident'>contains</span>(<span class='ident'>arg_slice</span>) {
|
||||
<span class='self'>self</span>.<span class='ident'>report_error</span>(<span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"\"{}\" isn't a valid value for {}{}"</span>,
|
||||
<span class='ident'>arg_slice</span>,
|
||||
<span class='ident'>p</span>.<span class='ident'>name</span>,
|
||||
<span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"\n [valid values:{}]"</span>, <span class='ident'>p_vals</span>.<span class='ident'>iter</span>().<span class='ident'>fold</span>(<span class='ident'>String</span>::<span class='ident'>new</span>(), <span class='op'>|</span><span class='ident'>acc</span>, <span class='ident'>name</span><span class='op'>|</span> <span class='ident'>acc</span> <span class='op'>+</span> <span class='kw-2'>&</span><span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>" {}"</span>,<span class='ident'>name</span>)[..] )) ), <span class='boolval'>true</span>, <span class='boolval'>true</span>);
|
||||
<span class='ident'>p</span>,
|
||||
<span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"\n\t[valid values:{}]"</span>, <span class='ident'>p_vals</span>.<span class='ident'>iter</span>().<span class='ident'>fold</span>(<span class='ident'>String</span>::<span class='ident'>new</span>(), <span class='op'>|</span><span class='ident'>acc</span>, <span class='ident'>name</span><span class='op'>|</span> <span class='ident'>acc</span> <span class='op'>+</span> <span class='kw-2'>&</span><span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>" {}"</span>,<span class='ident'>name</span>)[..] )) ), <span class='boolval'>true</span>, <span class='boolval'>true</span>);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2349,7 +2662,6 @@
|
|||
<span class='comment'>// Was an update made, or is this the first occurrence?</span>
|
||||
<span class='kw'>if</span> <span class='op'>!</span><span class='ident'>done</span> {
|
||||
<span class='ident'>matches</span>.<span class='ident'>args</span>.<span class='ident'>insert</span>(<span class='ident'>p</span>.<span class='ident'>name</span>, <span class='ident'>MatchedArg</span>{
|
||||
<span class='ident'>name</span>: <span class='ident'>p</span>.<span class='ident'>name</span>.<span class='ident'>to_owned</span>(),
|
||||
<span class='ident'>occurrences</span>: <span class='number'>1</span>,
|
||||
<span class='ident'>values</span>: <span class='prelude-val'>Some</span>(<span class='macro'>vec</span><span class='macro'>!</span>[<span class='ident'>arg</span>.<span class='ident'>clone</span>()]),
|
||||
});
|
||||
|
@ -2362,10 +2674,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
<span class='comment'>// No need to check for existance, returns None if not found</span>
|
||||
<span class='comment'>// if self.required.contains(p.name) {</span>
|
||||
<span class='self'>self</span>.<span class='ident'>required</span>.<span class='ident'>remove</span>(<span class='ident'>p</span>.<span class='ident'>name</span>);
|
||||
<span class='comment'>// }</span>
|
||||
<span class='self'>self</span>.<span class='ident'>required</span>.<span class='ident'>remove</span>(<span class='ident'>p</span>.<span class='ident'>name</span>);
|
||||
<span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='kw-2'>ref</span> <span class='ident'>reqs</span>) <span class='op'>=</span> <span class='ident'>p</span>.<span class='ident'>requires</span> {
|
||||
<span class='comment'>// Add all required args which aren't already found in matches to the</span>
|
||||
<span class='comment'>// final required list</span>
|
||||
|
@ -2376,6 +2685,9 @@
|
|||
<span class='self'>self</span>.<span class='ident'>required</span>.<span class='ident'>insert</span>(<span class='ident'>n</span>);
|
||||
}
|
||||
}
|
||||
|
||||
<span class='macro'>parse_group_reqs</span><span class='macro'>!</span>(<span class='self'>self</span>, <span class='ident'>p</span>);
|
||||
|
||||
} <span class='kw'>else</span> {
|
||||
<span class='self'>self</span>.<span class='ident'>report_error</span>(<span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"Argument \"{}\" isn't a valid argument for {}"</span>, <span class='ident'>arg</span>, <span class='self'>self</span>.<span class='ident'>bin_name</span>.<span class='ident'>clone</span>().<span class='ident'>unwrap_or</span>(<span class='self'>self</span>.<span class='ident'>name</span>.<span class='ident'>clone</span>())), <span class='boolval'>true</span>, <span class='boolval'>true</span>);
|
||||
}
|
||||
|
@ -2393,8 +2705,13 @@
|
|||
<span class='self'>self</span>.<span class='ident'>validate_blacklist</span>(<span class='kw-2'>&</span><span class='ident'>matches</span>);
|
||||
|
||||
<span class='kw'>if</span> <span class='op'>!</span><span class='self'>self</span>.<span class='ident'>required</span>.<span class='ident'>is_empty</span>() {
|
||||
<span class='self'>self</span>.<span class='ident'>report_error</span>(<span class='string'>"One or more required arguments were not supplied"</span>.<span class='ident'>to_owned</span>(),
|
||||
<span class='boolval'>true</span>, <span class='boolval'>true</span>);
|
||||
<span class='comment'>// println!("reqs: {:?}", self.required);</span>
|
||||
<span class='comment'>// println!("bls: {:?}", self.blacklist);</span>
|
||||
<span class='comment'>// println!("grps: {:?}", self.groups);</span>
|
||||
<span class='kw'>if</span> <span class='self'>self</span>.<span class='ident'>validate_required</span>(<span class='kw-2'>&</span><span class='ident'>matches</span>) {
|
||||
<span class='self'>self</span>.<span class='ident'>report_error</span>(<span class='string'>"One or more required arguments were not supplied"</span>.<span class='ident'>to_owned</span>(),
|
||||
<span class='boolval'>true</span>, <span class='boolval'>true</span>);
|
||||
}
|
||||
}
|
||||
|
||||
<span class='ident'>matches</span>.<span class='ident'>usage</span> <span class='op'>=</span> <span class='prelude-val'>Some</span>(<span class='self'>self</span>.<span class='ident'>create_usage</span>());
|
||||
|
@ -2406,7 +2723,7 @@
|
|||
<span class='ident'>sc</span>.<span class='ident'>bin_name</span> <span class='op'>=</span> <span class='prelude-val'>Some</span>(<span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"{}{}{}"</span>, <span class='self'>self</span>.<span class='ident'>bin_name</span>.<span class='ident'>clone</span>().<span class='ident'>unwrap_or</span>(<span class='string'>""</span>.<span class='ident'>to_owned</span>()),<span class='kw'>if</span> <span class='self'>self</span>.<span class='ident'>bin_name</span>.<span class='ident'>is_some</span>() {<span class='string'>" "</span>} <span class='kw'>else</span> {<span class='string'>""</span>}, <span class='ident'>sc</span>.<span class='ident'>name</span>.<span class='ident'>clone</span>()));
|
||||
<span class='ident'>sc</span>.<span class='ident'>get_matches_from</span>(<span class='kw-2'>&</span><span class='kw-2'>mut</span> <span class='ident'>new_matches</span>, <span class='ident'>it</span>);
|
||||
<span class='ident'>matches</span>.<span class='ident'>subcommand</span> <span class='op'>=</span> <span class='prelude-val'>Some</span>(<span class='ident'>Box</span>::<span class='ident'>new</span>(<span class='ident'>SubCommand</span>{
|
||||
<span class='ident'>name</span>: <span class='ident'>sc</span>.<span class='ident'>name</span>.<span class='ident'>clone</span>(),
|
||||
<span class='ident'>name</span>: <span class='ident'>sc</span>.<span class='ident'>name_slice</span>,
|
||||
<span class='ident'>matches</span>: <span class='ident'>new_matches</span>}));
|
||||
}
|
||||
}
|
||||
|
@ -2458,7 +2775,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
<span class='kw'>fn</span> <span class='ident'>parse_long_arg</span>(<span class='kw-2'>&</span><span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>matches</span>: <span class='kw-2'>&</span><span class='kw-2'>mut</span> <span class='ident'>ArgMatches</span><span class='op'><</span><span class='lifetime'>'ar</span><span class='op'>></span> ,<span class='ident'>full_arg</span>: <span class='kw-2'>&</span><span class='ident'>String</span>) <span class='op'>-></span> <span class='prelude-ty'>Option</span><span class='op'><</span><span class='kw-2'>&</span><span class='lifetime'>'ar</span> <span class='ident'>str</span><span class='op'>></span> {
|
||||
<span class='kw'>fn</span> <span class='ident'>parse_long_arg</span>(<span class='kw-2'>&</span><span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>matches</span>: <span class='kw-2'>&</span><span class='kw-2'>mut</span> <span class='ident'>ArgMatches</span><span class='op'><</span><span class='lifetime'>'ar</span>, <span class='lifetime'>'ar</span><span class='op'>></span> ,<span class='ident'>full_arg</span>: <span class='kw-2'>&</span><span class='ident'>String</span>) <span class='op'>-></span> <span class='prelude-ty'>Option</span><span class='op'><</span><span class='kw-2'>&</span><span class='lifetime'>'ar</span> <span class='ident'>str</span><span class='op'>></span> {
|
||||
<span class='kw'>let</span> <span class='kw-2'>mut</span> <span class='ident'>arg</span> <span class='op'>=</span> <span class='ident'>full_arg</span>.<span class='ident'>trim_left_matches</span>(<span class='op'>|</span><span class='ident'>c</span><span class='op'>|</span> <span class='ident'>c</span> <span class='op'>==</span> <span class='string'>'-'</span>);
|
||||
|
||||
<span class='kw'>if</span> <span class='ident'>arg</span> <span class='op'>==</span> <span class='string'>"help"</span> <span class='op'>&&</span> <span class='self'>self</span>.<span class='ident'>needs_long_help</span> {
|
||||
|
@ -2514,7 +2831,7 @@
|
|||
}
|
||||
} <span class='kw'>else</span> {
|
||||
<span class='ident'>matches</span>.<span class='ident'>args</span>.<span class='ident'>insert</span>(<span class='ident'>v</span>.<span class='ident'>name</span>, <span class='ident'>MatchedArg</span>{
|
||||
<span class='ident'>name</span>: <span class='ident'>v</span>.<span class='ident'>name</span>.<span class='ident'>to_owned</span>(),
|
||||
<span class='comment'>// name: v.name.to_owned(),</span>
|
||||
<span class='ident'>occurrences</span>: <span class='kw'>if</span> <span class='ident'>arg_val</span>.<span class='ident'>is_some</span>() { <span class='number'>1</span> } <span class='kw'>else</span> { <span class='number'>0</span> },
|
||||
<span class='ident'>values</span>: <span class='kw'>if</span> <span class='ident'>arg_val</span>.<span class='ident'>is_some</span>() { <span class='prelude-val'>Some</span>(<span class='macro'>vec</span><span class='macro'>!</span>[<span class='ident'>arg_val</span>.<span class='ident'>clone</span>().<span class='ident'>unwrap</span>()])} <span class='kw'>else</span> { <span class='prelude-val'>Some</span>(<span class='macro'>vec</span><span class='macro'>!</span>[]) }
|
||||
});
|
||||
|
@ -2538,7 +2855,10 @@
|
|||
|
||||
<span class='self'>self</span>.<span class='ident'>required</span>.<span class='ident'>insert</span>(<span class='ident'>n</span>);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
<span class='macro'>parse_group_reqs</span><span class='macro'>!</span>(<span class='self'>self</span>, <span class='ident'>v</span>);
|
||||
|
||||
<span class='kw'>match</span> <span class='ident'>arg_val</span> {
|
||||
<span class='prelude-val'>None</span> <span class='op'>=></span> { <span class='kw'>return</span> <span class='prelude-val'>Some</span>(<span class='ident'>v</span>.<span class='ident'>name</span>); },
|
||||
_ <span class='op'>=></span> { <span class='kw'>return</span> <span class='prelude-val'>None</span>; }
|
||||
|
@ -2548,13 +2868,13 @@
|
|||
<span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='ident'>v</span>) <span class='op'>=</span> <span class='self'>self</span>.<span class='ident'>flags</span>.<span class='ident'>values</span>().<span class='ident'>filter</span>(<span class='op'>|</span><span class='kw-2'>&</span><span class='ident'>v</span><span class='op'>|</span> <span class='ident'>v</span>.<span class='ident'>long</span>.<span class='ident'>is_some</span>()).<span class='ident'>filter</span>(<span class='op'>|</span><span class='kw-2'>&</span><span class='ident'>v</span><span class='op'>|</span> <span class='ident'>v</span>.<span class='ident'>long</span>.<span class='ident'>unwrap</span>() <span class='op'>==</span> <span class='ident'>arg</span>).<span class='ident'>nth</span>(<span class='number'>0</span>) {
|
||||
<span class='comment'>// Ensure this flag isn't on the mutually excludes list</span>
|
||||
<span class='kw'>if</span> <span class='self'>self</span>.<span class='ident'>blacklist</span>.<span class='ident'>contains</span>(<span class='ident'>v</span>.<span class='ident'>name</span>) {
|
||||
<span class='self'>self</span>.<span class='ident'>report_error</span>(<span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"The argument --{} cannot be used with one or more of the other specified arguments"</span>, <span class='ident'>arg</span>),
|
||||
<span class='self'>self</span>.<span class='ident'>report_error</span>(<span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"The argument {} cannot be used with one or more of the other specified arguments"</span>, <span class='ident'>v</span>),
|
||||
<span class='boolval'>true</span>, <span class='boolval'>true</span>);
|
||||
}
|
||||
|
||||
<span class='comment'>// Make sure this isn't one being added multiple times if it doesn't suppor it</span>
|
||||
<span class='kw'>if</span> <span class='ident'>matches</span>.<span class='ident'>args</span>.<span class='ident'>contains_key</span>(<span class='ident'>v</span>.<span class='ident'>name</span>) <span class='op'>&&</span> <span class='op'>!</span><span class='ident'>v</span>.<span class='ident'>multiple</span> {
|
||||
<span class='self'>self</span>.<span class='ident'>report_error</span>(<span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"Argument --{} was supplied more than once, but does not support multiple values"</span>, <span class='ident'>arg</span>), <span class='boolval'>true</span>, <span class='boolval'>true</span>);
|
||||
<span class='self'>self</span>.<span class='ident'>report_error</span>(<span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"Argument {} was supplied more than once, but does not support multiple values"</span>, <span class='ident'>v</span>), <span class='boolval'>true</span>, <span class='boolval'>true</span>);
|
||||
}
|
||||
|
||||
<span class='kw'>let</span> <span class='kw-2'>mut</span>
|
||||
|
@ -2565,7 +2885,7 @@
|
|||
}
|
||||
<span class='kw'>if</span> <span class='op'>!</span><span class='ident'>done</span> {
|
||||
<span class='ident'>matches</span>.<span class='ident'>args</span>.<span class='ident'>insert</span>(<span class='ident'>v</span>.<span class='ident'>name</span>, <span class='ident'>MatchedArg</span>{
|
||||
<span class='ident'>name</span>: <span class='ident'>v</span>.<span class='ident'>name</span>.<span class='ident'>to_owned</span>(),
|
||||
<span class='comment'>// name: v.name.to_owned(),</span>
|
||||
<span class='ident'>occurrences</span>: <span class='number'>1</span>,
|
||||
<span class='ident'>values</span>: <span class='prelude-val'>None</span>
|
||||
});
|
||||
|
@ -2592,6 +2912,9 @@
|
|||
<span class='self'>self</span>.<span class='ident'>required</span>.<span class='ident'>insert</span>(<span class='ident'>n</span>);
|
||||
}
|
||||
}
|
||||
|
||||
<span class='macro'>parse_group_reqs</span><span class='macro'>!</span>(<span class='self'>self</span>, <span class='ident'>v</span>);
|
||||
|
||||
<span class='kw'>return</span> <span class='prelude-val'>None</span>;
|
||||
}
|
||||
|
||||
|
@ -2601,7 +2924,7 @@
|
|||
<span class='macro'>unreachable</span><span class='macro'>!</span>();
|
||||
}
|
||||
|
||||
<span class='kw'>fn</span> <span class='ident'>parse_short_arg</span>(<span class='kw-2'>&</span><span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>matches</span>: <span class='kw-2'>&</span><span class='kw-2'>mut</span> <span class='ident'>ArgMatches</span><span class='op'><</span><span class='lifetime'>'ar</span><span class='op'>></span> ,<span class='ident'>full_arg</span>: <span class='kw-2'>&</span><span class='ident'>String</span>) <span class='op'>-></span> <span class='prelude-ty'>Option</span><span class='op'><</span><span class='kw-2'>&</span><span class='lifetime'>'ar</span> <span class='ident'>str</span><span class='op'>></span> {
|
||||
<span class='kw'>fn</span> <span class='ident'>parse_short_arg</span>(<span class='kw-2'>&</span><span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>matches</span>: <span class='kw-2'>&</span><span class='kw-2'>mut</span> <span class='ident'>ArgMatches</span><span class='op'><</span><span class='lifetime'>'ar</span>, <span class='lifetime'>'ar</span><span class='op'>></span> ,<span class='ident'>full_arg</span>: <span class='kw-2'>&</span><span class='ident'>String</span>) <span class='op'>-></span> <span class='prelude-ty'>Option</span><span class='op'><</span><span class='kw-2'>&</span><span class='lifetime'>'ar</span> <span class='ident'>str</span><span class='op'>></span> {
|
||||
<span class='kw'>let</span> <span class='ident'>arg</span> <span class='op'>=</span> <span class='kw-2'>&</span><span class='ident'>full_arg</span>[..].<span class='ident'>trim_left_matches</span>(<span class='op'>|</span><span class='ident'>c</span><span class='op'>|</span> <span class='ident'>c</span> <span class='op'>==</span> <span class='string'>'-'</span>);
|
||||
<span class='kw'>if</span> <span class='ident'>arg</span>.<span class='ident'>len</span>() <span class='op'>></span> <span class='number'>1</span> {
|
||||
<span class='comment'>// Multiple flags using short i.e. -bgHlS</span>
|
||||
|
@ -2637,7 +2960,7 @@
|
|||
}
|
||||
} <span class='kw'>else</span> {
|
||||
<span class='ident'>matches</span>.<span class='ident'>args</span>.<span class='ident'>insert</span>(<span class='ident'>v</span>.<span class='ident'>name</span>, <span class='ident'>MatchedArg</span>{
|
||||
<span class='ident'>name</span>: <span class='ident'>v</span>.<span class='ident'>name</span>.<span class='ident'>to_owned</span>(),
|
||||
<span class='comment'>// name: v.name.to_owned(),</span>
|
||||
<span class='comment'>// occurrences will be incremented on getting a value</span>
|
||||
<span class='ident'>occurrences</span>: <span class='number'>0</span>,
|
||||
<span class='ident'>values</span>: <span class='prelude-val'>Some</span>(<span class='macro'>vec</span><span class='macro'>!</span>[])
|
||||
|
@ -2662,6 +2985,9 @@
|
|||
<span class='self'>self</span>.<span class='ident'>required</span>.<span class='ident'>insert</span>(<span class='ident'>n</span>);
|
||||
}
|
||||
}
|
||||
|
||||
<span class='macro'>parse_group_reqs</span><span class='macro'>!</span>(<span class='self'>self</span>, <span class='ident'>v</span>);
|
||||
|
||||
<span class='kw'>return</span> <span class='prelude-val'>Some</span>(<span class='ident'>v</span>.<span class='ident'>name</span>)
|
||||
}
|
||||
|
||||
|
@ -2671,7 +2997,7 @@
|
|||
<span class='macro'>unreachable</span><span class='macro'>!</span>();
|
||||
}
|
||||
|
||||
<span class='kw'>fn</span> <span class='ident'>parse_single_short_flag</span>(<span class='kw-2'>&</span><span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>matches</span>: <span class='kw-2'>&</span><span class='kw-2'>mut</span> <span class='ident'>ArgMatches</span><span class='op'><</span><span class='lifetime'>'ar</span><span class='op'>></span>, <span class='ident'>arg</span>: <span class='ident'>char</span>) <span class='op'>-></span> <span class='ident'>bool</span> {
|
||||
<span class='kw'>fn</span> <span class='ident'>parse_single_short_flag</span>(<span class='kw-2'>&</span><span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>matches</span>: <span class='kw-2'>&</span><span class='kw-2'>mut</span> <span class='ident'>ArgMatches</span><span class='op'><</span><span class='lifetime'>'ar</span>, <span class='lifetime'>'ar</span><span class='op'>></span>, <span class='ident'>arg</span>: <span class='ident'>char</span>) <span class='op'>-></span> <span class='ident'>bool</span> {
|
||||
<span class='kw'>for</span> <span class='ident'>v</span> <span class='kw'>in</span> <span class='self'>self</span>.<span class='ident'>flags</span>.<span class='ident'>values</span>().<span class='ident'>filter</span>(<span class='op'>|</span><span class='kw-2'>&</span><span class='ident'>v</span><span class='op'>|</span> <span class='ident'>v</span>.<span class='ident'>short</span>.<span class='ident'>is_some</span>()).<span class='ident'>filter</span>(<span class='op'>|</span><span class='kw-2'>&</span><span class='ident'>v</span><span class='op'>|</span> <span class='ident'>v</span>.<span class='ident'>short</span>.<span class='ident'>unwrap</span>() <span class='op'>==</span> <span class='ident'>arg</span>) {
|
||||
<span class='comment'>// Ensure this flag isn't on the mutually excludes list</span>
|
||||
<span class='kw'>if</span> <span class='self'>self</span>.<span class='ident'>blacklist</span>.<span class='ident'>contains</span>(<span class='ident'>v</span>.<span class='ident'>name</span>) {
|
||||
|
@ -2691,7 +3017,7 @@
|
|||
}
|
||||
<span class='kw'>if</span> <span class='op'>!</span><span class='ident'>done</span> {
|
||||
<span class='ident'>matches</span>.<span class='ident'>args</span>.<span class='ident'>insert</span>(<span class='ident'>v</span>.<span class='ident'>name</span>, <span class='ident'>MatchedArg</span>{
|
||||
<span class='ident'>name</span>: <span class='ident'>v</span>.<span class='ident'>name</span>.<span class='ident'>to_owned</span>(),
|
||||
<span class='comment'>// name: v.name.to_owned(),</span>
|
||||
<span class='ident'>occurrences</span>: <span class='number'>1</span>,
|
||||
<span class='ident'>values</span>: <span class='prelude-val'>None</span>
|
||||
});
|
||||
|
@ -2718,38 +3044,78 @@
|
|||
<span class='self'>self</span>.<span class='ident'>required</span>.<span class='ident'>insert</span>(<span class='ident'>n</span>);
|
||||
}
|
||||
}
|
||||
|
||||
<span class='macro'>parse_group_reqs</span><span class='macro'>!</span>(<span class='self'>self</span>, <span class='ident'>v</span>);
|
||||
|
||||
<span class='kw'>return</span> <span class='boolval'>true</span>;
|
||||
}
|
||||
<span class='boolval'>false</span>
|
||||
}
|
||||
|
||||
<span class='kw'>fn</span> <span class='ident'>validate_blacklist</span>(<span class='kw-2'>&</span><span class='self'>self</span>, <span class='ident'>matches</span>: <span class='kw-2'>&</span><span class='ident'>ArgMatches</span><span class='op'><</span><span class='lifetime'>'ar</span><span class='op'>></span>) {
|
||||
<span class='kw'>fn</span> <span class='ident'>validate_blacklist</span>(<span class='kw-2'>&</span><span class='self'>self</span>, <span class='ident'>matches</span>: <span class='kw-2'>&</span><span class='ident'>ArgMatches</span><span class='op'><</span><span class='lifetime'>'ar</span>, <span class='lifetime'>'ar</span><span class='op'>></span>) {
|
||||
<span class='kw'>for</span> <span class='ident'>name</span> <span class='kw'>in</span> <span class='self'>self</span>.<span class='ident'>blacklist</span>.<span class='ident'>iter</span>() {
|
||||
<span class='kw'>if</span> <span class='ident'>matches</span>.<span class='ident'>args</span>.<span class='ident'>contains_key</span>(<span class='ident'>name</span>) {
|
||||
<span class='self'>self</span>.<span class='ident'>report_error</span>(<span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"The argument {} cannot be used with one or more of the other specified arguments"</span>,
|
||||
<span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='kw-2'>ref</span> <span class='ident'>flag</span>) <span class='op'>=</span> <span class='self'>self</span>.<span class='ident'>flags</span>.<span class='ident'>get</span>(<span class='ident'>name</span>) {
|
||||
<span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='ident'>short</span>) <span class='op'>=</span> <span class='ident'>flag</span>.<span class='ident'>short</span> {
|
||||
<span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"-{}"</span>, <span class='ident'>short</span>)
|
||||
} <span class='kw'>else</span> <span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='ident'>long</span>) <span class='op'>=</span> <span class='ident'>flag</span>.<span class='ident'>long</span> {
|
||||
<span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"--{}"</span>, <span class='ident'>long</span>)
|
||||
} <span class='kw'>else</span> {
|
||||
<span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"\"{}\""</span>, <span class='ident'>flag</span>.<span class='ident'>name</span>)
|
||||
}
|
||||
<span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"{}"</span>, <span class='ident'>flag</span>)
|
||||
} <span class='kw'>else</span> <span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='kw-2'>ref</span> <span class='ident'>opt</span>) <span class='op'>=</span> <span class='self'>self</span>.<span class='ident'>opts</span>.<span class='ident'>get</span>(<span class='ident'>name</span>) {
|
||||
<span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='ident'>short</span>) <span class='op'>=</span> <span class='ident'>opt</span>.<span class='ident'>short</span> {
|
||||
<span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"-{}"</span>, <span class='ident'>short</span>)
|
||||
} <span class='kw'>else</span> <span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='ident'>long</span>) <span class='op'>=</span> <span class='ident'>opt</span>.<span class='ident'>long</span> {
|
||||
<span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"--{}"</span>, <span class='ident'>long</span>)
|
||||
} <span class='kw'>else</span> {
|
||||
<span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"\"{}\""</span>, <span class='ident'>opt</span>.<span class='ident'>name</span>)
|
||||
}
|
||||
<span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"{}"</span>, <span class='ident'>opt</span>)
|
||||
} <span class='kw'>else</span> {
|
||||
<span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"\"{}\""</span>, <span class='ident'>name</span>)
|
||||
<span class='kw'>match</span> <span class='self'>self</span>.<span class='ident'>positionals_idx</span>.<span class='ident'>values</span>().<span class='ident'>filter</span>(<span class='op'>|</span><span class='ident'>p</span><span class='op'>|</span> <span class='ident'>p</span>.<span class='ident'>name</span> <span class='op'>==</span> <span class='op'>*</span><span class='ident'>name</span>).<span class='ident'>next</span>() {
|
||||
<span class='prelude-val'>Some</span>(<span class='ident'>pos</span>) <span class='op'>=></span> <span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"{}"</span>, <span class='ident'>pos</span>),
|
||||
<span class='prelude-val'>None</span> <span class='op'>=></span> <span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"\"{}\""</span>, <span class='ident'>name</span>)
|
||||
}
|
||||
}), <span class='boolval'>true</span>, <span class='boolval'>true</span>);
|
||||
} <span class='kw'>else</span> <span class='kw'>if</span> <span class='self'>self</span>.<span class='ident'>groups</span>.<span class='ident'>contains_key</span>(<span class='ident'>name</span>) {
|
||||
<span class='kw'>let</span> <span class='ident'>grp</span> <span class='op'>=</span> <span class='self'>self</span>.<span class='ident'>groups</span>.<span class='ident'>get</span>(<span class='ident'>name</span>).<span class='ident'>unwrap</span>();
|
||||
<span class='kw'>for</span> <span class='ident'>n</span> <span class='kw'>in</span> <span class='ident'>grp</span>.<span class='ident'>args</span>.<span class='ident'>iter</span>() {
|
||||
<span class='kw'>if</span> <span class='ident'>matches</span>.<span class='ident'>args</span>.<span class='ident'>contains_key</span>(<span class='ident'>n</span>) {
|
||||
<span class='self'>self</span>.<span class='ident'>report_error</span>(<span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"The argument {} cannot be used with one or more of the other specified arguments"</span>,
|
||||
<span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='kw-2'>ref</span> <span class='ident'>flag</span>) <span class='op'>=</span> <span class='self'>self</span>.<span class='ident'>flags</span>.<span class='ident'>get</span>(<span class='ident'>n</span>) {
|
||||
<span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"{}"</span>, <span class='ident'>flag</span>)
|
||||
} <span class='kw'>else</span> <span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='kw-2'>ref</span> <span class='ident'>opt</span>) <span class='op'>=</span> <span class='self'>self</span>.<span class='ident'>opts</span>.<span class='ident'>get</span>(<span class='ident'>n</span>) {
|
||||
<span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"{}"</span>, <span class='ident'>opt</span>)
|
||||
} <span class='kw'>else</span> {
|
||||
<span class='kw'>match</span> <span class='self'>self</span>.<span class='ident'>positionals_idx</span>.<span class='ident'>values</span>().<span class='ident'>filter</span>(<span class='op'>|</span><span class='ident'>p</span><span class='op'>|</span> <span class='ident'>p</span>.<span class='ident'>name</span> <span class='op'>==</span> <span class='op'>*</span><span class='ident'>name</span>).<span class='ident'>next</span>() {
|
||||
<span class='prelude-val'>Some</span>(<span class='ident'>pos</span>) <span class='op'>=></span> <span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"{}"</span>, <span class='ident'>pos</span>),
|
||||
<span class='prelude-val'>None</span> <span class='op'>=></span> <span class='macro'>format</span><span class='macro'>!</span>(<span class='string'>"\"{}\""</span>, <span class='ident'>n</span>)
|
||||
}
|
||||
}), <span class='boolval'>true</span>, <span class='boolval'>true</span>);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
<span class='kw'>fn</span> <span class='ident'>validate_required</span>(<span class='kw-2'>&</span><span class='self'>self</span>, <span class='ident'>matches</span>: <span class='kw-2'>&</span><span class='ident'>ArgMatches</span><span class='op'><</span><span class='lifetime'>'ar</span>, <span class='lifetime'>'ar</span><span class='op'>></span>) <span class='op'>-></span> <span class='ident'>bool</span>{
|
||||
<span class='kw'>for</span> <span class='ident'>name</span> <span class='kw'>in</span> <span class='self'>self</span>.<span class='ident'>required</span>.<span class='ident'>iter</span>() {
|
||||
<span class='macro'>validate_reqs</span><span class='macro'>!</span>(<span class='self'>self</span>, <span class='ident'>flags</span>, <span class='ident'>matches</span>, <span class='ident'>name</span>);
|
||||
|
||||
<span class='macro'>validate_reqs</span><span class='macro'>!</span>(<span class='self'>self</span>, <span class='ident'>opts</span>, <span class='ident'>matches</span>, <span class='ident'>name</span>);
|
||||
|
||||
<span class='comment'>// because positions use different keys, we dont use the macro</span>
|
||||
<span class='kw'>match</span> <span class='self'>self</span>.<span class='ident'>positionals_idx</span>.<span class='ident'>values</span>().<span class='ident'>filter</span>(<span class='op'>|</span><span class='kw-2'>ref</span> <span class='ident'>p</span><span class='op'>|</span> <span class='kw-2'>&</span><span class='ident'>p</span>.<span class='ident'>name</span> <span class='op'>==</span> <span class='ident'>name</span>).<span class='ident'>next</span>() {
|
||||
<span class='prelude-val'>Some</span>(<span class='ident'>p</span>) <span class='op'>=></span>{
|
||||
<span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='kw-2'>ref</span> <span class='ident'>bl</span>) <span class='op'>=</span> <span class='ident'>p</span>.<span class='ident'>blacklist</span> {
|
||||
<span class='kw'>for</span> <span class='ident'>n</span> <span class='kw'>in</span> <span class='ident'>bl</span>.<span class='ident'>iter</span>() {
|
||||
<span class='kw'>if</span> <span class='ident'>matches</span>.<span class='ident'>args</span>.<span class='ident'>contains_key</span>(<span class='ident'>n</span>) {
|
||||
<span class='kw'>return</span> <span class='boolval'>false</span>
|
||||
} <span class='kw'>else</span> <span class='kw'>if</span> <span class='self'>self</span>.<span class='ident'>groups</span>.<span class='ident'>contains_key</span>(<span class='ident'>n</span>) {
|
||||
<span class='kw'>let</span> <span class='ident'>grp</span> <span class='op'>=</span> <span class='self'>self</span>.<span class='ident'>groups</span>.<span class='ident'>get</span>(<span class='ident'>n</span>).<span class='ident'>unwrap</span>();
|
||||
<span class='kw'>for</span> <span class='ident'>an</span> <span class='kw'>in</span> <span class='ident'>grp</span>.<span class='ident'>args</span>.<span class='ident'>iter</span>() {
|
||||
<span class='kw'>if</span> <span class='ident'>matches</span>.<span class='ident'>args</span>.<span class='ident'>contains_key</span>(<span class='ident'>an</span>) {
|
||||
<span class='kw'>return</span> <span class='boolval'>false</span>
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
<span class='prelude-val'>None</span> <span class='op'>=></span>(),
|
||||
}
|
||||
}
|
||||
<span class='boolval'>true</span>
|
||||
}
|
||||
}
|
||||
</pre>
|
||||
</section>
|
||||
|
|
|
@ -592,6 +592,76 @@
|
|||
<span id="550">550</span>
|
||||
<span id="551">551</span>
|
||||
<span id="552">552</span>
|
||||
<span id="553">553</span>
|
||||
<span id="554">554</span>
|
||||
<span id="555">555</span>
|
||||
<span id="556">556</span>
|
||||
<span id="557">557</span>
|
||||
<span id="558">558</span>
|
||||
<span id="559">559</span>
|
||||
<span id="560">560</span>
|
||||
<span id="561">561</span>
|
||||
<span id="562">562</span>
|
||||
<span id="563">563</span>
|
||||
<span id="564">564</span>
|
||||
<span id="565">565</span>
|
||||
<span id="566">566</span>
|
||||
<span id="567">567</span>
|
||||
<span id="568">568</span>
|
||||
<span id="569">569</span>
|
||||
<span id="570">570</span>
|
||||
<span id="571">571</span>
|
||||
<span id="572">572</span>
|
||||
<span id="573">573</span>
|
||||
<span id="574">574</span>
|
||||
<span id="575">575</span>
|
||||
<span id="576">576</span>
|
||||
<span id="577">577</span>
|
||||
<span id="578">578</span>
|
||||
<span id="579">579</span>
|
||||
<span id="580">580</span>
|
||||
<span id="581">581</span>
|
||||
<span id="582">582</span>
|
||||
<span id="583">583</span>
|
||||
<span id="584">584</span>
|
||||
<span id="585">585</span>
|
||||
<span id="586">586</span>
|
||||
<span id="587">587</span>
|
||||
<span id="588">588</span>
|
||||
<span id="589">589</span>
|
||||
<span id="590">590</span>
|
||||
<span id="591">591</span>
|
||||
<span id="592">592</span>
|
||||
<span id="593">593</span>
|
||||
<span id="594">594</span>
|
||||
<span id="595">595</span>
|
||||
<span id="596">596</span>
|
||||
<span id="597">597</span>
|
||||
<span id="598">598</span>
|
||||
<span id="599">599</span>
|
||||
<span id="600">600</span>
|
||||
<span id="601">601</span>
|
||||
<span id="602">602</span>
|
||||
<span id="603">603</span>
|
||||
<span id="604">604</span>
|
||||
<span id="605">605</span>
|
||||
<span id="606">606</span>
|
||||
<span id="607">607</span>
|
||||
<span id="608">608</span>
|
||||
<span id="609">609</span>
|
||||
<span id="610">610</span>
|
||||
<span id="611">611</span>
|
||||
<span id="612">612</span>
|
||||
<span id="613">613</span>
|
||||
<span id="614">614</span>
|
||||
<span id="615">615</span>
|
||||
<span id="616">616</span>
|
||||
<span id="617">617</span>
|
||||
<span id="618">618</span>
|
||||
<span id="619">619</span>
|
||||
<span id="620">620</span>
|
||||
<span id="621">621</span>
|
||||
<span id="622">622</span>
|
||||
</pre><pre class='rust '>
|
||||
<span class='kw'>use</span> <span class='ident'>usageparser</span>::{<span class='ident'>UsageParser</span>, <span class='ident'>UsageToken</span>};
|
||||
|
||||
|
@ -623,7 +693,7 @@
|
|||
<span class='doccomment'>/// // Using a usage string (setting a similar argument to the one above)</span>
|
||||
<span class='doccomment'>/// Arg::from_usage("-i --input=[input] 'Provides an input file to the program'")</span>
|
||||
<span class='doccomment'>/// # ).get_matches();</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>struct</span> <span class='ident'>Arg</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'l</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'b</span>, <span class='lifetime'>'p</span>, <span class='lifetime'>'r</span><span class='op'>></span> {
|
||||
<span class='kw'>pub</span> <span class='kw'>struct</span> <span class='ident'>Arg</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'l</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'g</span>, <span class='lifetime'>'p</span>, <span class='lifetime'>'r</span><span class='op'>></span> {
|
||||
<span class='doccomment'>/// The unique name of the argument, required</span>
|
||||
<span class='attribute'>#[<span class='ident'>doc</span>(<span class='ident'>hidden</span>)]</span>
|
||||
<span class='kw'>pub</span> <span class='ident'>name</span>: <span class='kw-2'>&</span><span class='lifetime'>'n</span> <span class='ident'>str</span>,
|
||||
|
@ -660,17 +730,20 @@
|
|||
<span class='kw'>pub</span> <span class='ident'>multiple</span>: <span class='ident'>bool</span>,
|
||||
<span class='doccomment'>/// A list of names for other arguments that *may not* be used with this flag</span>
|
||||
<span class='attribute'>#[<span class='ident'>doc</span>(<span class='ident'>hidden</span>)]</span>
|
||||
<span class='kw'>pub</span> <span class='ident'>blacklist</span>: <span class='prelude-ty'>Option</span><span class='op'><</span><span class='ident'>Vec</span><span class='op'><</span><span class='kw-2'>&</span><span class='lifetime'>'b</span> <span class='ident'>str</span><span class='op'>>></span>,
|
||||
<span class='kw'>pub</span> <span class='ident'>blacklist</span>: <span class='prelude-ty'>Option</span><span class='op'><</span><span class='ident'>Vec</span><span class='op'><</span><span class='kw-2'>&</span><span class='lifetime'>'r</span> <span class='ident'>str</span><span class='op'>>></span>,
|
||||
<span class='doccomment'>/// A list of possible values for an option or positional argument</span>
|
||||
<span class='attribute'>#[<span class='ident'>doc</span>(<span class='ident'>hidden</span>)]</span>
|
||||
<span class='kw'>pub</span> <span class='ident'>possible_vals</span>: <span class='prelude-ty'>Option</span><span class='op'><</span><span class='ident'>Vec</span><span class='op'><</span><span class='kw-2'>&</span><span class='lifetime'>'p</span> <span class='ident'>str</span><span class='op'>>></span>,
|
||||
<span class='doccomment'>/// A list of names of other arguments that are *required* to be used when </span>
|
||||
<span class='doccomment'>/// this flag is used</span>
|
||||
<span class='attribute'>#[<span class='ident'>doc</span>(<span class='ident'>hidden</span>)]</span>
|
||||
<span class='kw'>pub</span> <span class='ident'>requires</span>: <span class='prelude-ty'>Option</span><span class='op'><</span><span class='ident'>Vec</span><span class='op'><</span><span class='kw-2'>&</span><span class='lifetime'>'r</span> <span class='ident'>str</span><span class='op'>>></span>
|
||||
<span class='kw'>pub</span> <span class='ident'>requires</span>: <span class='prelude-ty'>Option</span><span class='op'><</span><span class='ident'>Vec</span><span class='op'><</span><span class='kw-2'>&</span><span class='lifetime'>'r</span> <span class='ident'>str</span><span class='op'>>></span>,
|
||||
<span class='doccomment'>/// A name of the group the argument belongs to</span>
|
||||
<span class='attribute'>#[<span class='ident'>doc</span>(<span class='ident'>hidden</span>)]</span>
|
||||
<span class='kw'>pub</span> <span class='ident'>group</span>: <span class='prelude-ty'>Option</span><span class='op'><</span><span class='kw-2'>&</span><span class='lifetime'>'g</span> <span class='ident'>str</span><span class='op'>></span>
|
||||
}
|
||||
|
||||
<span class='kw'>impl</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'l</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'b</span>, <span class='lifetime'>'p</span>, <span class='lifetime'>'r</span><span class='op'>></span> <span class='ident'>Arg</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'l</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'b</span>, <span class='lifetime'>'p</span>, <span class='lifetime'>'r</span><span class='op'>></span> {
|
||||
<span class='kw'>impl</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'l</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'g</span>, <span class='lifetime'>'p</span>, <span class='lifetime'>'r</span><span class='op'>></span> <span class='ident'>Arg</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'l</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'g</span>, <span class='lifetime'>'p</span>, <span class='lifetime'>'r</span><span class='op'>></span> {
|
||||
<span class='doccomment'>/// Creates a new instace of `Arg` using a unique string name. </span>
|
||||
<span class='doccomment'>/// The name will be used by the library consumer to get information about</span>
|
||||
<span class='doccomment'>/// whether or not the argument was used at runtime. </span>
|
||||
|
@ -692,7 +765,7 @@
|
|||
<span class='doccomment'>/// Arg::new("conifg")</span>
|
||||
<span class='doccomment'>/// # .short("c")</span>
|
||||
<span class='doccomment'>/// # ).get_matches();</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>new</span>(<span class='ident'>n</span>: <span class='kw-2'>&</span><span class='lifetime'>'n</span> <span class='ident'>str</span>) <span class='op'>-></span> <span class='ident'>Arg</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'l</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'b</span>, <span class='lifetime'>'p</span>, <span class='lifetime'>'r</span><span class='op'>></span> {
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>new</span>(<span class='ident'>n</span>: <span class='kw-2'>&</span><span class='lifetime'>'n</span> <span class='ident'>str</span>) <span class='op'>-></span> <span class='ident'>Arg</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'l</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'g</span>, <span class='lifetime'>'p</span>, <span class='lifetime'>'r</span><span class='op'>></span> {
|
||||
<span class='ident'>Arg</span> {
|
||||
<span class='ident'>name</span>: <span class='ident'>n</span>,
|
||||
<span class='ident'>short</span>: <span class='prelude-val'>None</span>,
|
||||
|
@ -705,6 +778,7 @@
|
|||
<span class='ident'>possible_vals</span>: <span class='prelude-val'>None</span>,
|
||||
<span class='ident'>blacklist</span>: <span class='prelude-val'>None</span>,
|
||||
<span class='ident'>requires</span>: <span class='prelude-val'>None</span>,
|
||||
<span class='ident'>group</span>: <span class='prelude-val'>None</span>,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -726,7 +800,7 @@
|
|||
<span class='doccomment'>/// Arg::with_name("conifg")</span>
|
||||
<span class='doccomment'>/// # .short("c")</span>
|
||||
<span class='doccomment'>/// # ).get_matches();</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>with_name</span>(<span class='ident'>n</span>: <span class='kw-2'>&</span><span class='lifetime'>'n</span> <span class='ident'>str</span>) <span class='op'>-></span> <span class='ident'>Arg</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'l</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'b</span>, <span class='lifetime'>'p</span>, <span class='lifetime'>'r</span><span class='op'>></span> {
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>with_name</span>(<span class='ident'>n</span>: <span class='kw-2'>&</span><span class='lifetime'>'n</span> <span class='ident'>str</span>) <span class='op'>-></span> <span class='ident'>Arg</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'l</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'g</span>, <span class='lifetime'>'p</span>, <span class='lifetime'>'r</span><span class='op'>></span> {
|
||||
<span class='ident'>Arg</span> {
|
||||
<span class='ident'>name</span>: <span class='ident'>n</span>,
|
||||
<span class='ident'>short</span>: <span class='prelude-val'>None</span>,
|
||||
|
@ -739,6 +813,7 @@
|
|||
<span class='ident'>possible_vals</span>: <span class='prelude-val'>None</span>,
|
||||
<span class='ident'>blacklist</span>: <span class='prelude-val'>None</span>,
|
||||
<span class='ident'>requires</span>: <span class='prelude-val'>None</span>,
|
||||
<span class='ident'>group</span>: <span class='prelude-val'>None</span>,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -790,7 +865,7 @@
|
|||
<span class='doccomment'>/// Arg::from_usage("<input> 'the input file to use'")</span>
|
||||
<span class='doccomment'>/// ])</span>
|
||||
<span class='doccomment'>/// # .get_matches();</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>from_usage</span>(<span class='ident'>u</span>: <span class='kw-2'>&</span><span class='lifetime'>'n</span> <span class='ident'>str</span>) <span class='op'>-></span> <span class='ident'>Arg</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'n</span>, <span class='lifetime'>'n</span>, <span class='lifetime'>'b</span>, <span class='lifetime'>'p</span>, <span class='lifetime'>'r</span><span class='op'>></span> {
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>from_usage</span>(<span class='ident'>u</span>: <span class='kw-2'>&</span><span class='lifetime'>'n</span> <span class='ident'>str</span>) <span class='op'>-></span> <span class='ident'>Arg</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'n</span>, <span class='lifetime'>'n</span>, <span class='lifetime'>'g</span>, <span class='lifetime'>'p</span>, <span class='lifetime'>'r</span><span class='op'>></span> {
|
||||
<span class='macro'>assert</span><span class='macro'>!</span>(<span class='ident'>u</span>.<span class='ident'>len</span>() <span class='op'>></span> <span class='number'>0</span>, <span class='string'>"Arg::from_usage() requires a non-zero-length usage string but none was provided"</span>);
|
||||
|
||||
<span class='kw'>let</span> <span class='kw-2'>mut</span> <span class='ident'>name</span> <span class='op'>=</span> <span class='prelude-val'>None</span>;
|
||||
|
@ -823,14 +898,6 @@
|
|||
<span class='kw'>if</span> <span class='ident'>short</span>.<span class='ident'>is_some</span>() <span class='op'>||</span> <span class='ident'>long</span>.<span class='ident'>is_some</span>() {
|
||||
<span class='ident'>takes_value</span> <span class='op'>=</span> <span class='boolval'>true</span>;
|
||||
}
|
||||
<span class='comment'>// if let Some(l) = long {</span>
|
||||
<span class='comment'>// if n != name.unwrap() && name.unwrap() == l {</span>
|
||||
<span class='comment'>// name = Some(n);</span>
|
||||
<span class='comment'>// if let Some(r) = req {</span>
|
||||
<span class='comment'>// required = r;</span>
|
||||
<span class='comment'>// }</span>
|
||||
<span class='comment'>// }</span>
|
||||
<span class='comment'>// } </span>
|
||||
},
|
||||
<span class='ident'>UsageToken</span>::<span class='ident'>Short</span>(<span class='ident'>s</span>) <span class='op'>=></span> {
|
||||
<span class='ident'>short</span> <span class='op'>=</span> <span class='prelude-val'>Some</span>(<span class='ident'>s</span>);
|
||||
|
@ -861,6 +928,7 @@
|
|||
<span class='ident'>possible_vals</span>: <span class='prelude-val'>None</span>,
|
||||
<span class='ident'>blacklist</span>: <span class='prelude-val'>None</span>,
|
||||
<span class='ident'>requires</span>: <span class='prelude-val'>None</span>,
|
||||
<span class='ident'>group</span>: <span class='prelude-val'>None</span>,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -884,7 +952,7 @@
|
|||
<span class='doccomment'>/// # Arg::new("conifg")</span>
|
||||
<span class='doccomment'>/// .short("c")</span>
|
||||
<span class='doccomment'>/// # ).get_matches();</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>short</span>(<span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>s</span>: <span class='kw-2'>&</span><span class='ident'>str</span>) <span class='op'>-></span> <span class='ident'>Arg</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'l</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'b</span>, <span class='lifetime'>'p</span>, <span class='lifetime'>'r</span><span class='op'>></span> {
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>short</span>(<span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>s</span>: <span class='kw-2'>&</span><span class='ident'>str</span>) <span class='op'>-></span> <span class='ident'>Arg</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'l</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'g</span>, <span class='lifetime'>'p</span>, <span class='lifetime'>'r</span><span class='op'>></span> {
|
||||
<span class='self'>self</span>.<span class='ident'>short</span> <span class='op'>=</span> <span class='ident'>s</span>.<span class='ident'>trim_left_matches</span>(<span class='op'>|</span><span class='ident'>c</span><span class='op'>|</span> <span class='ident'>c</span> <span class='op'>==</span> <span class='string'>'-'</span>).<span class='ident'>chars</span>().<span class='ident'>nth</span>(<span class='number'>0</span>);
|
||||
<span class='self'>self</span>
|
||||
}
|
||||
|
@ -908,7 +976,7 @@
|
|||
<span class='doccomment'>/// # Arg::new("conifg")</span>
|
||||
<span class='doccomment'>/// .long("config")</span>
|
||||
<span class='doccomment'>/// # ).get_matches();</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>long</span>(<span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>l</span>: <span class='kw-2'>&</span><span class='lifetime'>'l</span> <span class='ident'>str</span>) <span class='op'>-></span> <span class='ident'>Arg</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'l</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'b</span>, <span class='lifetime'>'p</span>, <span class='lifetime'>'r</span><span class='op'>></span> {
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>long</span>(<span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>l</span>: <span class='kw-2'>&</span><span class='lifetime'>'l</span> <span class='ident'>str</span>) <span class='op'>-></span> <span class='ident'>Arg</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'l</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'g</span>, <span class='lifetime'>'p</span>, <span class='lifetime'>'r</span><span class='op'>></span> {
|
||||
<span class='self'>self</span>.<span class='ident'>long</span> <span class='op'>=</span> <span class='prelude-val'>Some</span>(<span class='ident'>l</span>.<span class='ident'>trim_left_matches</span>(<span class='op'>|</span><span class='ident'>c</span><span class='op'>|</span> <span class='ident'>c</span> <span class='op'>==</span> <span class='string'>'-'</span>));
|
||||
<span class='self'>self</span>
|
||||
}
|
||||
|
@ -926,7 +994,7 @@
|
|||
<span class='doccomment'>/// # Arg::new("conifg")</span>
|
||||
<span class='doccomment'>/// .help("The config file used by the myprog")</span>
|
||||
<span class='doccomment'>/// # ).get_matches();</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>help</span>(<span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>h</span>: <span class='kw-2'>&</span><span class='lifetime'>'h</span> <span class='ident'>str</span>) <span class='op'>-></span> <span class='ident'>Arg</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'l</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'b</span>, <span class='lifetime'>'p</span>, <span class='lifetime'>'r</span><span class='op'>></span> {
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>help</span>(<span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>h</span>: <span class='kw-2'>&</span><span class='lifetime'>'h</span> <span class='ident'>str</span>) <span class='op'>-></span> <span class='ident'>Arg</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'l</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'g</span>, <span class='lifetime'>'p</span>, <span class='lifetime'>'r</span><span class='op'>></span> {
|
||||
<span class='self'>self</span>.<span class='ident'>help</span> <span class='op'>=</span> <span class='prelude-val'>Some</span>(<span class='ident'>h</span>);
|
||||
<span class='self'>self</span>
|
||||
}
|
||||
|
@ -950,11 +1018,66 @@
|
|||
<span class='doccomment'>/// # Arg::with_name("conifg")</span>
|
||||
<span class='doccomment'>/// .required(true)</span>
|
||||
<span class='doccomment'>/// # ).get_matches();</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>required</span>(<span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>r</span>: <span class='ident'>bool</span>) <span class='op'>-></span> <span class='ident'>Arg</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'l</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'b</span>, <span class='lifetime'>'p</span>, <span class='lifetime'>'r</span><span class='op'>></span> {
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>required</span>(<span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>r</span>: <span class='ident'>bool</span>) <span class='op'>-></span> <span class='ident'>Arg</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'l</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'g</span>, <span class='lifetime'>'p</span>, <span class='lifetime'>'r</span><span class='op'>></span> {
|
||||
<span class='self'>self</span>.<span class='ident'>required</span> <span class='op'>=</span> <span class='ident'>r</span>;
|
||||
<span class='self'>self</span>
|
||||
}
|
||||
|
||||
<span class='doccomment'>/// Sets a mutually exclusive argument by name. I.e. when using this argument, </span>
|
||||
<span class='doccomment'>/// the following argument can't be present.</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>/// **NOTE:** Mutually exclusive rules take precedence over being required</span>
|
||||
<span class='doccomment'>/// by default. Mutually exclusive rules only need to be set for one of the two</span>
|
||||
<span class='doccomment'>/// arguments, they do not need to be set for each.</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>/// **NOTE:** This method is deprecated in favor of `conflicts_with()`</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>/// # Example</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>/// ```no_run</span>
|
||||
<span class='doccomment'>/// # use clap::{App, Arg};</span>
|
||||
<span class='doccomment'>/// # let myprog = App::new("myprog").arg(Arg::with_name("conifg")</span>
|
||||
<span class='doccomment'>/// .mutually_excludes("debug")</span>
|
||||
<span class='doccomment'>/// # ).get_matches();</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>mutually_excludes</span>(<span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>name</span>: <span class='kw-2'>&</span><span class='lifetime'>'r</span> <span class='ident'>str</span>) <span class='op'>-></span> <span class='ident'>Arg</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'l</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'g</span>, <span class='lifetime'>'p</span>, <span class='lifetime'>'r</span><span class='op'>></span> {
|
||||
<span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='kw-2'>ref</span> <span class='kw-2'>mut</span> <span class='ident'>vec</span>) <span class='op'>=</span> <span class='self'>self</span>.<span class='ident'>blacklist</span> {
|
||||
<span class='ident'>vec</span>.<span class='ident'>push</span>(<span class='ident'>name</span>);
|
||||
} <span class='kw'>else</span> {
|
||||
<span class='self'>self</span>.<span class='ident'>blacklist</span> <span class='op'>=</span> <span class='prelude-val'>Some</span>(<span class='macro'>vec</span><span class='macro'>!</span>[<span class='ident'>name</span>]);
|
||||
}
|
||||
<span class='self'>self</span>
|
||||
}
|
||||
|
||||
<span class='doccomment'>/// Sets a mutually exclusive arguments by names. I.e. when using this argument, </span>
|
||||
<span class='doccomment'>/// the following argument can't be present.</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>/// **NOTE:** Mutually exclusive rules take precedence over being required</span>
|
||||
<span class='doccomment'>/// by default. Mutually exclusive rules only need to be set for one of the two</span>
|
||||
<span class='doccomment'>/// arguments, they do not need to be set for each.</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>/// **NOTE:** This method is deprecated in favor of `conflicts_with_all()`</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>/// # Example</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>/// ```no_run</span>
|
||||
<span class='doccomment'>/// # use clap::{App, Arg};</span>
|
||||
<span class='doccomment'>/// # let myprog = App::new("myprog").arg(Arg::with_name("conifg")</span>
|
||||
<span class='doccomment'>/// .mutually_excludes_all(</span>
|
||||
<span class='doccomment'>/// vec!["debug", "input"])</span>
|
||||
<span class='doccomment'>/// # ).get_matches();</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>mutually_excludes_all</span>(<span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>names</span>: <span class='ident'>Vec</span><span class='op'><</span><span class='kw-2'>&</span><span class='lifetime'>'r</span> <span class='ident'>str</span><span class='op'>></span>) <span class='op'>-></span> <span class='ident'>Arg</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'l</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'g</span>, <span class='lifetime'>'p</span>, <span class='lifetime'>'r</span><span class='op'>></span> {
|
||||
<span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='kw-2'>ref</span> <span class='kw-2'>mut</span> <span class='ident'>vec</span>) <span class='op'>=</span> <span class='self'>self</span>.<span class='ident'>blacklist</span> {
|
||||
<span class='kw'>for</span> <span class='ident'>n</span> <span class='kw'>in</span> <span class='ident'>names</span> {
|
||||
<span class='ident'>vec</span>.<span class='ident'>push</span>(<span class='ident'>n</span>);
|
||||
}
|
||||
} <span class='kw'>else</span> {
|
||||
<span class='self'>self</span>.<span class='ident'>blacklist</span> <span class='op'>=</span> <span class='prelude-val'>Some</span>(<span class='ident'>names</span>);
|
||||
}
|
||||
<span class='self'>self</span>
|
||||
}
|
||||
|
||||
<span class='doccomment'>/// Sets a mutually exclusive argument by name. I.e. when using this argument, </span>
|
||||
<span class='doccomment'>/// the following argument can't be present.</span>
|
||||
<span class='doccomment'>///</span>
|
||||
|
@ -968,9 +1091,9 @@
|
|||
<span class='doccomment'>/// ```no_run</span>
|
||||
<span class='doccomment'>/// # use clap::{App, Arg};</span>
|
||||
<span class='doccomment'>/// # let myprog = App::new("myprog").arg(Arg::with_name("conifg")</span>
|
||||
<span class='doccomment'>/// .mutually_excludes("debug")</span>
|
||||
<span class='doccomment'>/// .conflicts_with("debug")</span>
|
||||
<span class='doccomment'>/// # ).get_matches();</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>mutually_excludes</span>(<span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>name</span>: <span class='kw-2'>&</span><span class='lifetime'>'b</span> <span class='ident'>str</span>) <span class='op'>-></span> <span class='ident'>Arg</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'l</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'b</span>, <span class='lifetime'>'p</span>, <span class='lifetime'>'r</span><span class='op'>></span> {
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>conflicts_with</span>(<span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>name</span>: <span class='kw-2'>&</span><span class='lifetime'>'r</span> <span class='ident'>str</span>) <span class='op'>-></span> <span class='ident'>Arg</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'l</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'g</span>, <span class='lifetime'>'p</span>, <span class='lifetime'>'r</span><span class='op'>></span> {
|
||||
<span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='kw-2'>ref</span> <span class='kw-2'>mut</span> <span class='ident'>vec</span>) <span class='op'>=</span> <span class='self'>self</span>.<span class='ident'>blacklist</span> {
|
||||
<span class='ident'>vec</span>.<span class='ident'>push</span>(<span class='ident'>name</span>);
|
||||
} <span class='kw'>else</span> {
|
||||
|
@ -979,7 +1102,7 @@
|
|||
<span class='self'>self</span>
|
||||
}
|
||||
|
||||
<span class='doccomment'>/// Sets a mutually exclusive arguments by names. I.e. when using this argument, </span>
|
||||
<span class='doccomment'>/// Sets mutually exclusive arguments by names. I.e. when using this argument, </span>
|
||||
<span class='doccomment'>/// the following argument can't be present.</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>/// **NOTE:** Mutually exclusive rules take precedence over being required</span>
|
||||
|
@ -992,10 +1115,10 @@
|
|||
<span class='doccomment'>/// ```no_run</span>
|
||||
<span class='doccomment'>/// # use clap::{App, Arg};</span>
|
||||
<span class='doccomment'>/// # let myprog = App::new("myprog").arg(Arg::with_name("conifg")</span>
|
||||
<span class='doccomment'>/// .mutually_excludes_all(</span>
|
||||
<span class='doccomment'>/// .conflicts_with_all(</span>
|
||||
<span class='doccomment'>/// vec!["debug", "input"])</span>
|
||||
<span class='doccomment'>/// # ).get_matches();</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>mutually_excludes_all</span>(<span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>names</span>: <span class='ident'>Vec</span><span class='op'><</span><span class='kw-2'>&</span><span class='lifetime'>'b</span> <span class='ident'>str</span><span class='op'>></span>) <span class='op'>-></span> <span class='ident'>Arg</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'l</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'b</span>, <span class='lifetime'>'p</span>, <span class='lifetime'>'r</span><span class='op'>></span> {
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>conflicts_with_all</span>(<span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>names</span>: <span class='ident'>Vec</span><span class='op'><</span><span class='kw-2'>&</span><span class='lifetime'>'r</span> <span class='ident'>str</span><span class='op'>></span>) <span class='op'>-></span> <span class='ident'>Arg</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'l</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'g</span>, <span class='lifetime'>'p</span>, <span class='lifetime'>'r</span><span class='op'>></span> {
|
||||
<span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='kw-2'>ref</span> <span class='kw-2'>mut</span> <span class='ident'>vec</span>) <span class='op'>=</span> <span class='self'>self</span>.<span class='ident'>blacklist</span> {
|
||||
<span class='kw'>for</span> <span class='ident'>n</span> <span class='kw'>in</span> <span class='ident'>names</span> {
|
||||
<span class='ident'>vec</span>.<span class='ident'>push</span>(<span class='ident'>n</span>);
|
||||
|
@ -1019,7 +1142,7 @@
|
|||
<span class='doccomment'>/// # let myprog = App::new("myprog").arg(Arg::with_name("conifg")</span>
|
||||
<span class='doccomment'>/// .requires("debug")</span>
|
||||
<span class='doccomment'>/// # ).get_matches();</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>requires</span>(<span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>name</span>: <span class='kw-2'>&</span><span class='lifetime'>'r</span> <span class='ident'>str</span>) <span class='op'>-></span> <span class='ident'>Arg</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'l</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'b</span>, <span class='lifetime'>'p</span>, <span class='lifetime'>'r</span><span class='op'>></span> {
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>requires</span>(<span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>name</span>: <span class='kw-2'>&</span><span class='lifetime'>'r</span> <span class='ident'>str</span>) <span class='op'>-></span> <span class='ident'>Arg</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'l</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'g</span>, <span class='lifetime'>'p</span>, <span class='lifetime'>'r</span><span class='op'>></span> {
|
||||
<span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='kw-2'>ref</span> <span class='kw-2'>mut</span> <span class='ident'>vec</span>) <span class='op'>=</span> <span class='self'>self</span>.<span class='ident'>requires</span> {
|
||||
<span class='ident'>vec</span>.<span class='ident'>push</span>(<span class='ident'>name</span>);
|
||||
} <span class='kw'>else</span> {
|
||||
|
@ -1043,7 +1166,7 @@
|
|||
<span class='doccomment'>/// .requires_all(</span>
|
||||
<span class='doccomment'>/// vec!["debug", "input"])</span>
|
||||
<span class='doccomment'>/// # ).get_matches();</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>requires_all</span>(<span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>names</span>: <span class='ident'>Vec</span><span class='op'><</span><span class='kw-2'>&</span><span class='lifetime'>'r</span> <span class='ident'>str</span><span class='op'>></span>) <span class='op'>-></span> <span class='ident'>Arg</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'l</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'b</span>, <span class='lifetime'>'p</span>, <span class='lifetime'>'r</span><span class='op'>></span> {
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>requires_all</span>(<span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>names</span>: <span class='ident'>Vec</span><span class='op'><</span><span class='kw-2'>&</span><span class='lifetime'>'r</span> <span class='ident'>str</span><span class='op'>></span>) <span class='op'>-></span> <span class='ident'>Arg</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'l</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'g</span>, <span class='lifetime'>'p</span>, <span class='lifetime'>'r</span><span class='op'>></span> {
|
||||
<span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='kw-2'>ref</span> <span class='kw-2'>mut</span> <span class='ident'>vec</span>) <span class='op'>=</span> <span class='self'>self</span>.<span class='ident'>requires</span> {
|
||||
<span class='kw'>for</span> <span class='ident'>n</span> <span class='kw'>in</span> <span class='ident'>names</span> {
|
||||
<span class='ident'>vec</span>.<span class='ident'>push</span>(<span class='ident'>n</span>);
|
||||
|
@ -1069,7 +1192,7 @@
|
|||
<span class='doccomment'>/// # Arg::with_name("conifg")</span>
|
||||
<span class='doccomment'>/// .takes_value(true)</span>
|
||||
<span class='doccomment'>/// # ).get_matches();</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>takes_value</span>(<span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>tv</span>: <span class='ident'>bool</span>) <span class='op'>-></span> <span class='ident'>Arg</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'l</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'b</span>, <span class='lifetime'>'p</span>, <span class='lifetime'>'r</span><span class='op'>></span> {
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>takes_value</span>(<span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>tv</span>: <span class='ident'>bool</span>) <span class='op'>-></span> <span class='ident'>Arg</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'l</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'g</span>, <span class='lifetime'>'p</span>, <span class='lifetime'>'r</span><span class='op'>></span> {
|
||||
<span class='self'>self</span>.<span class='ident'>takes_value</span> <span class='op'>=</span> <span class='ident'>tv</span>;
|
||||
<span class='self'>self</span>
|
||||
}
|
||||
|
@ -1091,7 +1214,7 @@
|
|||
<span class='doccomment'>/// # Arg::with_name("conifg")</span>
|
||||
<span class='doccomment'>/// .index(1)</span>
|
||||
<span class='doccomment'>/// # ).get_matches();</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>index</span>(<span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>idx</span>: <span class='ident'>u8</span>) <span class='op'>-></span> <span class='ident'>Arg</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'l</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'b</span>, <span class='lifetime'>'p</span>, <span class='lifetime'>'r</span><span class='op'>></span> {
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>index</span>(<span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>idx</span>: <span class='ident'>u8</span>) <span class='op'>-></span> <span class='ident'>Arg</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'l</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'g</span>, <span class='lifetime'>'p</span>, <span class='lifetime'>'r</span><span class='op'>></span> {
|
||||
<span class='self'>self</span>.<span class='ident'>index</span> <span class='op'>=</span> <span class='prelude-val'>Some</span>(<span class='ident'>idx</span>);
|
||||
<span class='self'>self</span>
|
||||
}
|
||||
|
@ -1114,7 +1237,7 @@
|
|||
<span class='doccomment'>/// # Arg::with_name("debug")</span>
|
||||
<span class='doccomment'>/// .multiple(true)</span>
|
||||
<span class='doccomment'>/// # ).get_matches();</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>multiple</span>(<span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>multi</span>: <span class='ident'>bool</span>) <span class='op'>-></span> <span class='ident'>Arg</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'l</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'b</span>, <span class='lifetime'>'p</span>, <span class='lifetime'>'r</span><span class='op'>></span> {
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>multiple</span>(<span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>multi</span>: <span class='ident'>bool</span>) <span class='op'>-></span> <span class='ident'>Arg</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'l</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'g</span>, <span class='lifetime'>'p</span>, <span class='lifetime'>'r</span><span class='op'>></span> {
|
||||
<span class='self'>self</span>.<span class='ident'>multiple</span> <span class='op'>=</span> <span class='ident'>multi</span>;
|
||||
<span class='self'>self</span>
|
||||
}
|
||||
|
@ -1134,7 +1257,7 @@
|
|||
<span class='doccomment'>/// # Arg::with_name("debug").index(1)</span>
|
||||
<span class='doccomment'>/// .possible_values(vec!["fast", "slow"])</span>
|
||||
<span class='doccomment'>/// # ).get_matches();</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>possible_values</span>(<span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>names</span>: <span class='ident'>Vec</span><span class='op'><</span><span class='kw-2'>&</span><span class='lifetime'>'p</span> <span class='ident'>str</span><span class='op'>></span>) <span class='op'>-></span> <span class='ident'>Arg</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'l</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'b</span>, <span class='lifetime'>'p</span>, <span class='lifetime'>'r</span><span class='op'>></span> {
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>possible_values</span>(<span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>names</span>: <span class='ident'>Vec</span><span class='op'><</span><span class='kw-2'>&</span><span class='lifetime'>'p</span> <span class='ident'>str</span><span class='op'>></span>) <span class='op'>-></span> <span class='ident'>Arg</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'l</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'g</span>, <span class='lifetime'>'p</span>, <span class='lifetime'>'r</span><span class='op'>></span> {
|
||||
<span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='kw-2'>ref</span> <span class='kw-2'>mut</span> <span class='ident'>vec</span>) <span class='op'>=</span> <span class='self'>self</span>.<span class='ident'>possible_vals</span> {
|
||||
<span class='kw'>for</span> <span class='ident'>n</span> <span class='kw'>in</span> <span class='ident'>names</span> {
|
||||
<span class='ident'>vec</span>.<span class='ident'>push</span>(<span class='ident'>n</span>);
|
||||
|
@ -1144,6 +1267,23 @@
|
|||
}
|
||||
<span class='self'>self</span>
|
||||
}
|
||||
|
||||
<span class='doccomment'>/// Specifies the name of the group the argument belongs to.</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>/// # Example</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>/// ```no_run</span>
|
||||
<span class='doccomment'>/// # use clap::{App, Arg};</span>
|
||||
<span class='doccomment'>/// # let matches = App::new("myprog")</span>
|
||||
<span class='doccomment'>/// # .arg(</span>
|
||||
<span class='doccomment'>/// # Arg::with_name("debug").index(1)</span>
|
||||
<span class='doccomment'>/// .group("mode")</span>
|
||||
<span class='doccomment'>/// # ).get_matches();</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>group</span>(<span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>name</span>: <span class='kw-2'>&</span><span class='lifetime'>'g</span> <span class='ident'>str</span>) <span class='op'>-></span> <span class='ident'>Arg</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'l</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'g</span>, <span class='lifetime'>'p</span>, <span class='lifetime'>'r</span><span class='op'>></span> {
|
||||
<span class='self'>self</span>.<span class='ident'>group</span> <span class='op'>=</span> <span class='prelude-val'>Some</span>(<span class='ident'>name</span>);
|
||||
<span class='self'>self</span>
|
||||
}
|
||||
}
|
||||
</pre>
|
||||
</section>
|
||||
|
|
|
@ -360,16 +360,16 @@
|
|||
<span class='doccomment'>/// println!("Not printing testing lists...");</span>
|
||||
<span class='doccomment'>/// }</span>
|
||||
<span class='doccomment'>/// }</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>struct</span> <span class='ident'>ArgMatches</span><span class='op'><</span><span class='lifetime'>'a</span><span class='op'>></span> {
|
||||
<span class='kw'>pub</span> <span class='kw'>struct</span> <span class='ident'>ArgMatches</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'a</span><span class='op'>></span> {
|
||||
<span class='attribute'>#[<span class='ident'>doc</span>(<span class='ident'>hidden</span>)]</span>
|
||||
<span class='kw'>pub</span> <span class='ident'>args</span>: <span class='ident'>HashMap</span><span class='op'><</span><span class='kw-2'>&</span><span class='lifetime'>'a</span> <span class='ident'>str</span>, <span class='ident'>MatchedArg</span><span class='op'>></span>,
|
||||
<span class='attribute'>#[<span class='ident'>doc</span>(<span class='ident'>hidden</span>)]</span>
|
||||
<span class='kw'>pub</span> <span class='ident'>subcommand</span>: <span class='prelude-ty'>Option</span><span class='op'><</span><span class='ident'>Box</span><span class='op'><</span><span class='ident'>SubCommand</span><span class='op'><</span><span class='lifetime'>'a</span><span class='op'>>></span><span class='op'>></span>,
|
||||
<span class='kw'>pub</span> <span class='ident'>subcommand</span>: <span class='prelude-ty'>Option</span><span class='op'><</span><span class='ident'>Box</span><span class='op'><</span><span class='ident'>SubCommand</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'a</span><span class='op'>>></span><span class='op'>></span>,
|
||||
<span class='attribute'>#[<span class='ident'>doc</span>(<span class='ident'>hidden</span>)]</span>
|
||||
<span class='kw'>pub</span> <span class='ident'>usage</span>: <span class='prelude-ty'>Option</span><span class='op'><</span><span class='ident'>String</span><span class='op'>></span>
|
||||
}
|
||||
|
||||
<span class='kw'>impl</span><span class='op'><</span><span class='lifetime'>'a</span><span class='op'>></span> <span class='ident'>ArgMatches</span><span class='op'><</span><span class='lifetime'>'a</span><span class='op'>></span> {
|
||||
<span class='kw'>impl</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'a</span><span class='op'>></span> <span class='ident'>ArgMatches</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'a</span><span class='op'>></span> {
|
||||
<span class='doccomment'>/// Creates a new instance of `ArgMatches`. This ins't called directly, but</span>
|
||||
<span class='doccomment'>/// through the `.get_matches()` method of `App`</span>
|
||||
<span class='doccomment'>///</span>
|
||||
|
@ -380,7 +380,7 @@
|
|||
<span class='doccomment'>/// let matches = App::new("myprog").get_matches();</span>
|
||||
<span class='doccomment'>/// ```</span>
|
||||
<span class='attribute'>#[<span class='ident'>doc</span>(<span class='ident'>hidden</span>)]</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>new</span>() <span class='op'>-></span> <span class='ident'>ArgMatches</span><span class='op'><</span><span class='lifetime'>'a</span><span class='op'>></span> {
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>new</span>() <span class='op'>-></span> <span class='ident'>ArgMatches</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'a</span><span class='op'>></span> {
|
||||
<span class='ident'>ArgMatches</span> {
|
||||
<span class='ident'>args</span>: <span class='ident'>HashMap</span>::<span class='ident'>new</span>(),
|
||||
<span class='ident'>subcommand</span>: <span class='prelude-val'>None</span>,
|
||||
|
@ -404,7 +404,7 @@
|
|||
<span class='doccomment'>/// println!("Value for output: {}", o);</span>
|
||||
<span class='doccomment'>/// }</span>
|
||||
<span class='doccomment'>/// ```</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>value_of</span><span class='op'><</span><span class='lifetime'>'n</span><span class='op'>></span>(<span class='kw-2'>&</span><span class='self'>self</span>, <span class='ident'>name</span>: <span class='kw-2'>&</span><span class='lifetime'>'n</span> <span class='ident'>str</span>) <span class='op'>-></span> <span class='prelude-ty'>Option</span><span class='op'><</span><span class='kw-2'>&</span><span class='ident'>str</span><span class='op'>></span> {
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>value_of</span><span class='op'><</span><span class='lifetime'>'na</span><span class='op'>></span>(<span class='kw-2'>&</span><span class='self'>self</span>, <span class='ident'>name</span>: <span class='kw-2'>&</span><span class='lifetime'>'na</span> <span class='ident'>str</span>) <span class='op'>-></span> <span class='prelude-ty'>Option</span><span class='op'><</span><span class='kw-2'>&</span><span class='ident'>str</span><span class='op'>></span> {
|
||||
<span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='kw-2'>ref</span> <span class='ident'>arg</span>) <span class='op'>=</span> <span class='self'>self</span>.<span class='ident'>args</span>.<span class='ident'>get</span>(<span class='ident'>name</span>) {
|
||||
<span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='kw-2'>ref</span> <span class='ident'>vals</span>) <span class='op'>=</span> <span class='ident'>arg</span>.<span class='ident'>values</span> {
|
||||
<span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='kw-2'>ref</span> <span class='ident'>val</span>) <span class='op'>=</span> <span class='ident'>vals</span>.<span class='ident'>iter</span>().<span class='ident'>nth</span>(<span class='number'>0</span>) {
|
||||
|
@ -433,7 +433,7 @@
|
|||
<span class='doccomment'>/// }</span>
|
||||
<span class='doccomment'>/// }</span>
|
||||
<span class='doccomment'>/// ```</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>values_of</span><span class='op'><</span><span class='lifetime'>'n</span><span class='op'>></span>(<span class='kw-2'>&</span><span class='lifetime'>'a</span> <span class='self'>self</span>, <span class='ident'>name</span>: <span class='kw-2'>&</span><span class='lifetime'>'n</span> <span class='ident'>str</span>) <span class='op'>-></span> <span class='prelude-ty'>Option</span><span class='op'><</span><span class='ident'>Vec</span><span class='op'><</span><span class='kw-2'>&</span><span class='lifetime'>'a</span> <span class='ident'>str</span><span class='op'>>></span> {
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>values_of</span><span class='op'><</span><span class='lifetime'>'na</span><span class='op'>></span>(<span class='kw-2'>&</span><span class='lifetime'>'a</span> <span class='self'>self</span>, <span class='ident'>name</span>: <span class='kw-2'>&</span><span class='lifetime'>'na</span> <span class='ident'>str</span>) <span class='op'>-></span> <span class='prelude-ty'>Option</span><span class='op'><</span><span class='ident'>Vec</span><span class='op'><</span><span class='kw-2'>&</span><span class='lifetime'>'a</span> <span class='ident'>str</span><span class='op'>>></span> {
|
||||
<span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='kw-2'>ref</span> <span class='ident'>arg</span>) <span class='op'>=</span> <span class='self'>self</span>.<span class='ident'>args</span>.<span class='ident'>get</span>(<span class='ident'>name</span>) {
|
||||
<span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='kw-2'>ref</span> <span class='ident'>vals</span>) <span class='op'>=</span> <span class='ident'>arg</span>.<span class='ident'>values</span> {
|
||||
<span class='kw'>return</span> <span class='prelude-val'>Some</span>(<span class='ident'>vals</span>.<span class='ident'>iter</span>().<span class='ident'>map</span>(<span class='op'>|</span><span class='ident'>s</span><span class='op'>|</span> <span class='kw-2'>&</span><span class='ident'>s</span>[..]).<span class='ident'>collect</span>::<span class='op'><</span><span class='ident'>Vec</span><span class='op'><</span>_<span class='op'>>></span>());
|
||||
|
@ -454,7 +454,7 @@
|
|||
<span class='doccomment'>/// println!("The output argument was used!");</span>
|
||||
<span class='doccomment'>/// }</span>
|
||||
<span class='doccomment'>/// ```</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>is_present</span><span class='op'><</span><span class='lifetime'>'n</span><span class='op'>></span>(<span class='kw-2'>&</span><span class='self'>self</span>, <span class='ident'>name</span>: <span class='kw-2'>&</span><span class='lifetime'>'n</span> <span class='ident'>str</span>) <span class='op'>-></span> <span class='ident'>bool</span> {
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>is_present</span><span class='op'><</span><span class='lifetime'>'na</span><span class='op'>></span>(<span class='kw-2'>&</span><span class='self'>self</span>, <span class='ident'>name</span>: <span class='kw-2'>&</span><span class='lifetime'>'na</span> <span class='ident'>str</span>) <span class='op'>-></span> <span class='ident'>bool</span> {
|
||||
<span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='kw-2'>ref</span> <span class='ident'>sc</span>) <span class='op'>=</span> <span class='self'>self</span>.<span class='ident'>subcommand</span> {
|
||||
<span class='kw'>if</span> <span class='ident'>sc</span>.<span class='ident'>name</span> <span class='op'>==</span> <span class='ident'>name</span> { <span class='kw'>return</span> <span class='boolval'>true</span>; }
|
||||
}
|
||||
|
@ -478,7 +478,7 @@
|
|||
<span class='doccomment'>/// println!("Debug mode kind of on");</span>
|
||||
<span class='doccomment'>/// }</span>
|
||||
<span class='doccomment'>/// ```</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>occurrences_of</span><span class='op'><</span><span class='lifetime'>'n</span><span class='op'>></span>(<span class='kw-2'>&</span><span class='self'>self</span>, <span class='ident'>name</span>: <span class='kw-2'>&</span><span class='lifetime'>'n</span> <span class='ident'>str</span>) <span class='op'>-></span> <span class='ident'>u8</span> {
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>occurrences_of</span><span class='op'><</span><span class='lifetime'>'na</span><span class='op'>></span>(<span class='kw-2'>&</span><span class='self'>self</span>, <span class='ident'>name</span>: <span class='kw-2'>&</span><span class='lifetime'>'na</span> <span class='ident'>str</span>) <span class='op'>-></span> <span class='ident'>u8</span> {
|
||||
<span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='kw-2'>ref</span> <span class='ident'>arg</span>) <span class='op'>=</span> <span class='self'>self</span>.<span class='ident'>args</span>.<span class='ident'>get</span>(<span class='ident'>name</span>) {
|
||||
<span class='kw'>return</span> <span class='ident'>arg</span>.<span class='ident'>occurrences</span>;
|
||||
}
|
||||
|
@ -498,7 +498,7 @@
|
|||
<span class='doccomment'>/// // Use matches as normal</span>
|
||||
<span class='doccomment'>/// }</span>
|
||||
<span class='doccomment'>/// ```</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>subcommand_matches</span><span class='op'><</span><span class='lifetime'>'n</span><span class='op'>></span>(<span class='kw-2'>&</span><span class='self'>self</span>, <span class='ident'>name</span>: <span class='kw-2'>&</span><span class='lifetime'>'n</span> <span class='ident'>str</span>) <span class='op'>-></span> <span class='prelude-ty'>Option</span><span class='op'><</span><span class='kw-2'>&</span><span class='ident'>ArgMatches</span><span class='op'>></span> {
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>subcommand_matches</span><span class='op'><</span><span class='lifetime'>'na</span><span class='op'>></span>(<span class='kw-2'>&</span><span class='self'>self</span>, <span class='ident'>name</span>: <span class='kw-2'>&</span><span class='lifetime'>'na</span> <span class='ident'>str</span>) <span class='op'>-></span> <span class='prelude-ty'>Option</span><span class='op'><</span><span class='kw-2'>&</span><span class='ident'>ArgMatches</span><span class='op'>></span> {
|
||||
<span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>( <span class='kw-2'>ref</span> <span class='ident'>sc</span>) <span class='op'>=</span> <span class='self'>self</span>.<span class='ident'>subcommand</span> {
|
||||
<span class='kw'>if</span> <span class='ident'>sc</span>.<span class='ident'>name</span> <span class='op'>!=</span> <span class='ident'>name</span> { <span class='kw'>return</span> <span class='prelude-val'>None</span>; }
|
||||
<span class='kw'>return</span> <span class='prelude-val'>Some</span>(<span class='kw-2'>&</span><span class='ident'>sc</span>.<span class='ident'>matches</span>);
|
||||
|
|
573
docs/src/clap/args/group.rs.html
Normal file
573
docs/src/clap/args/group.rs.html
Normal file
|
@ -0,0 +1,573 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="generator" content="rustdoc">
|
||||
<meta name="description" content="Source to the Rust file `src/args/group.rs`.">
|
||||
<meta name="keywords" content="rust, rustlang, rust-lang">
|
||||
|
||||
<title>group.rs.html -- source</title>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../../../main.css">
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
<body class="rustdoc">
|
||||
<!--[if lte IE 8]>
|
||||
<div class="warning">
|
||||
This old browser is unsupported and will most likely display funky
|
||||
things.
|
||||
</div>
|
||||
<![endif]-->
|
||||
|
||||
|
||||
|
||||
<section class="sidebar">
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
<nav class="sub">
|
||||
<form class="search-form js-only">
|
||||
<div class="search-container">
|
||||
<input class="search-input" name="search"
|
||||
autocomplete="off"
|
||||
placeholder="Click or press 'S' to search, '?' for more options..."
|
||||
type="search">
|
||||
</div>
|
||||
</form>
|
||||
</nav>
|
||||
|
||||
<section id='main' class="content source"><pre class="line-numbers"><span id="1"> 1</span>
|
||||
<span id="2"> 2</span>
|
||||
<span id="3"> 3</span>
|
||||
<span id="4"> 4</span>
|
||||
<span id="5"> 5</span>
|
||||
<span id="6"> 6</span>
|
||||
<span id="7"> 7</span>
|
||||
<span id="8"> 8</span>
|
||||
<span id="9"> 9</span>
|
||||
<span id="10"> 10</span>
|
||||
<span id="11"> 11</span>
|
||||
<span id="12"> 12</span>
|
||||
<span id="13"> 13</span>
|
||||
<span id="14"> 14</span>
|
||||
<span id="15"> 15</span>
|
||||
<span id="16"> 16</span>
|
||||
<span id="17"> 17</span>
|
||||
<span id="18"> 18</span>
|
||||
<span id="19"> 19</span>
|
||||
<span id="20"> 20</span>
|
||||
<span id="21"> 21</span>
|
||||
<span id="22"> 22</span>
|
||||
<span id="23"> 23</span>
|
||||
<span id="24"> 24</span>
|
||||
<span id="25"> 25</span>
|
||||
<span id="26"> 26</span>
|
||||
<span id="27"> 27</span>
|
||||
<span id="28"> 28</span>
|
||||
<span id="29"> 29</span>
|
||||
<span id="30"> 30</span>
|
||||
<span id="31"> 31</span>
|
||||
<span id="32"> 32</span>
|
||||
<span id="33"> 33</span>
|
||||
<span id="34"> 34</span>
|
||||
<span id="35"> 35</span>
|
||||
<span id="36"> 36</span>
|
||||
<span id="37"> 37</span>
|
||||
<span id="38"> 38</span>
|
||||
<span id="39"> 39</span>
|
||||
<span id="40"> 40</span>
|
||||
<span id="41"> 41</span>
|
||||
<span id="42"> 42</span>
|
||||
<span id="43"> 43</span>
|
||||
<span id="44"> 44</span>
|
||||
<span id="45"> 45</span>
|
||||
<span id="46"> 46</span>
|
||||
<span id="47"> 47</span>
|
||||
<span id="48"> 48</span>
|
||||
<span id="49"> 49</span>
|
||||
<span id="50"> 50</span>
|
||||
<span id="51"> 51</span>
|
||||
<span id="52"> 52</span>
|
||||
<span id="53"> 53</span>
|
||||
<span id="54"> 54</span>
|
||||
<span id="55"> 55</span>
|
||||
<span id="56"> 56</span>
|
||||
<span id="57"> 57</span>
|
||||
<span id="58"> 58</span>
|
||||
<span id="59"> 59</span>
|
||||
<span id="60"> 60</span>
|
||||
<span id="61"> 61</span>
|
||||
<span id="62"> 62</span>
|
||||
<span id="63"> 63</span>
|
||||
<span id="64"> 64</span>
|
||||
<span id="65"> 65</span>
|
||||
<span id="66"> 66</span>
|
||||
<span id="67"> 67</span>
|
||||
<span id="68"> 68</span>
|
||||
<span id="69"> 69</span>
|
||||
<span id="70"> 70</span>
|
||||
<span id="71"> 71</span>
|
||||
<span id="72"> 72</span>
|
||||
<span id="73"> 73</span>
|
||||
<span id="74"> 74</span>
|
||||
<span id="75"> 75</span>
|
||||
<span id="76"> 76</span>
|
||||
<span id="77"> 77</span>
|
||||
<span id="78"> 78</span>
|
||||
<span id="79"> 79</span>
|
||||
<span id="80"> 80</span>
|
||||
<span id="81"> 81</span>
|
||||
<span id="82"> 82</span>
|
||||
<span id="83"> 83</span>
|
||||
<span id="84"> 84</span>
|
||||
<span id="85"> 85</span>
|
||||
<span id="86"> 86</span>
|
||||
<span id="87"> 87</span>
|
||||
<span id="88"> 88</span>
|
||||
<span id="89"> 89</span>
|
||||
<span id="90"> 90</span>
|
||||
<span id="91"> 91</span>
|
||||
<span id="92"> 92</span>
|
||||
<span id="93"> 93</span>
|
||||
<span id="94"> 94</span>
|
||||
<span id="95"> 95</span>
|
||||
<span id="96"> 96</span>
|
||||
<span id="97"> 97</span>
|
||||
<span id="98"> 98</span>
|
||||
<span id="99"> 99</span>
|
||||
<span id="100">100</span>
|
||||
<span id="101">101</span>
|
||||
<span id="102">102</span>
|
||||
<span id="103">103</span>
|
||||
<span id="104">104</span>
|
||||
<span id="105">105</span>
|
||||
<span id="106">106</span>
|
||||
<span id="107">107</span>
|
||||
<span id="108">108</span>
|
||||
<span id="109">109</span>
|
||||
<span id="110">110</span>
|
||||
<span id="111">111</span>
|
||||
<span id="112">112</span>
|
||||
<span id="113">113</span>
|
||||
<span id="114">114</span>
|
||||
<span id="115">115</span>
|
||||
<span id="116">116</span>
|
||||
<span id="117">117</span>
|
||||
<span id="118">118</span>
|
||||
<span id="119">119</span>
|
||||
<span id="120">120</span>
|
||||
<span id="121">121</span>
|
||||
<span id="122">122</span>
|
||||
<span id="123">123</span>
|
||||
<span id="124">124</span>
|
||||
<span id="125">125</span>
|
||||
<span id="126">126</span>
|
||||
<span id="127">127</span>
|
||||
<span id="128">128</span>
|
||||
<span id="129">129</span>
|
||||
<span id="130">130</span>
|
||||
<span id="131">131</span>
|
||||
<span id="132">132</span>
|
||||
<span id="133">133</span>
|
||||
<span id="134">134</span>
|
||||
<span id="135">135</span>
|
||||
<span id="136">136</span>
|
||||
<span id="137">137</span>
|
||||
<span id="138">138</span>
|
||||
<span id="139">139</span>
|
||||
<span id="140">140</span>
|
||||
<span id="141">141</span>
|
||||
<span id="142">142</span>
|
||||
<span id="143">143</span>
|
||||
<span id="144">144</span>
|
||||
<span id="145">145</span>
|
||||
<span id="146">146</span>
|
||||
<span id="147">147</span>
|
||||
<span id="148">148</span>
|
||||
<span id="149">149</span>
|
||||
<span id="150">150</span>
|
||||
<span id="151">151</span>
|
||||
<span id="152">152</span>
|
||||
<span id="153">153</span>
|
||||
<span id="154">154</span>
|
||||
<span id="155">155</span>
|
||||
<span id="156">156</span>
|
||||
<span id="157">157</span>
|
||||
<span id="158">158</span>
|
||||
<span id="159">159</span>
|
||||
<span id="160">160</span>
|
||||
<span id="161">161</span>
|
||||
<span id="162">162</span>
|
||||
<span id="163">163</span>
|
||||
<span id="164">164</span>
|
||||
<span id="165">165</span>
|
||||
<span id="166">166</span>
|
||||
<span id="167">167</span>
|
||||
<span id="168">168</span>
|
||||
<span id="169">169</span>
|
||||
<span id="170">170</span>
|
||||
<span id="171">171</span>
|
||||
<span id="172">172</span>
|
||||
<span id="173">173</span>
|
||||
<span id="174">174</span>
|
||||
<span id="175">175</span>
|
||||
<span id="176">176</span>
|
||||
<span id="177">177</span>
|
||||
<span id="178">178</span>
|
||||
<span id="179">179</span>
|
||||
<span id="180">180</span>
|
||||
<span id="181">181</span>
|
||||
<span id="182">182</span>
|
||||
<span id="183">183</span>
|
||||
<span id="184">184</span>
|
||||
<span id="185">185</span>
|
||||
<span id="186">186</span>
|
||||
<span id="187">187</span>
|
||||
<span id="188">188</span>
|
||||
<span id="189">189</span>
|
||||
<span id="190">190</span>
|
||||
<span id="191">191</span>
|
||||
<span id="192">192</span>
|
||||
<span id="193">193</span>
|
||||
<span id="194">194</span>
|
||||
<span id="195">195</span>
|
||||
<span id="196">196</span>
|
||||
<span id="197">197</span>
|
||||
<span id="198">198</span>
|
||||
<span id="199">199</span>
|
||||
<span id="200">200</span>
|
||||
<span id="201">201</span>
|
||||
<span id="202">202</span>
|
||||
<span id="203">203</span>
|
||||
<span id="204">204</span>
|
||||
<span id="205">205</span>
|
||||
<span id="206">206</span>
|
||||
<span id="207">207</span>
|
||||
<span id="208">208</span>
|
||||
<span id="209">209</span>
|
||||
<span id="210">210</span>
|
||||
<span id="211">211</span>
|
||||
<span id="212">212</span>
|
||||
<span id="213">213</span>
|
||||
<span id="214">214</span>
|
||||
<span id="215">215</span>
|
||||
<span id="216">216</span>
|
||||
<span id="217">217</span>
|
||||
<span id="218">218</span>
|
||||
<span id="219">219</span>
|
||||
<span id="220">220</span>
|
||||
<span id="221">221</span>
|
||||
<span id="222">222</span>
|
||||
<span id="223">223</span>
|
||||
<span id="224">224</span>
|
||||
<span id="225">225</span>
|
||||
<span id="226">226</span>
|
||||
<span id="227">227</span>
|
||||
<span id="228">228</span>
|
||||
<span id="229">229</span>
|
||||
<span id="230">230</span>
|
||||
<span id="231">231</span>
|
||||
<span id="232">232</span>
|
||||
<span id="233">233</span>
|
||||
<span id="234">234</span>
|
||||
<span id="235">235</span>
|
||||
<span id="236">236</span>
|
||||
<span id="237">237</span>
|
||||
<span id="238">238</span>
|
||||
<span id="239">239</span>
|
||||
<span id="240">240</span>
|
||||
</pre><pre class='rust '>
|
||||
<span class='kw'>use</span> <span class='ident'>std</span>::<span class='ident'>collections</span>::<span class='ident'>HashSet</span>;
|
||||
<span class='kw'>use</span> <span class='ident'>std</span>::<span class='ident'>fmt</span>::{<span class='ident'>Debug</span>, <span class='ident'>Formatter</span>, <span class='prelude-ty'>Result</span>};
|
||||
|
||||
<span class='doccomment'>/// ArgGroups are a family of related arguments and provide a few useful features for you. By </span>
|
||||
<span class='doccomment'>/// placing arguments in a logical group, you can make easier requirement and exclusion rules. For </span>
|
||||
<span class='doccomment'>/// instance, you can make an ArgGroup required, this means that one (and *only* one) argument</span>
|
||||
<span class='doccomment'>/// from that group must be present. Using more than one argument from an ArgGroup causes a </span>
|
||||
<span class='doccomment'>/// failure (graceful exit).</span>
|
||||
<span class='doccomment'>/// </span>
|
||||
<span class='doccomment'>/// You can also do things such as name an ArgGroup as a confliction or requirement, meaning any </span>
|
||||
<span class='doccomment'>/// of the arguments that belong to that group will cause a failure if present, or must present</span>
|
||||
<span class='doccomment'>/// respectively.</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>/// Perhaps the most common use of ArgGroups is to require one and *only* one argument to be </span>
|
||||
<span class='doccomment'>/// present out of a given set. For example, lets say that you were building an application</span>
|
||||
<span class='doccomment'>/// where one could set a given version number by supplying a string using an option argument,</span>
|
||||
<span class='doccomment'>/// such as `--set-ver v1.2.3`, you also wanted to support automatically using a previous</span>
|
||||
<span class='doccomment'>/// version numer and simply incrementing one of the three numbers, so you create three flags</span>
|
||||
<span class='doccomment'>/// `--major`, `--minor`, and `--patch`. All of these arguments shouldn't be used at one time</span>
|
||||
<span class='doccomment'>/// but perhaps you want to specify that *at least one* of them is used. You can create a</span>
|
||||
<span class='doccomment'>/// group</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>/// # Example</span>
|
||||
<span class='doccomment'>/// ```no_run</span>
|
||||
<span class='doccomment'>/// # use clap::{App, ArgGroup};</span>
|
||||
<span class='doccomment'>/// # let _ = App::new("app")</span>
|
||||
<span class='doccomment'>/// .args_from_usage("--set-ver [ver] 'set the version manually'</span>
|
||||
<span class='doccomment'>/// --major 'auto increase major'</span>
|
||||
<span class='doccomment'>/// --minor 'auto increase minor'</span>
|
||||
<span class='doccomment'>/// --patch 'auto increase patch")</span>
|
||||
<span class='doccomment'>/// .arg_group(ArgGroup::with_name("vers")</span>
|
||||
<span class='doccomment'>/// .add_all(vec!["ver", "major", "minor","patch"])</span>
|
||||
<span class='doccomment'>/// .required(true))</span>
|
||||
<span class='doccomment'>/// # .get_matches();</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>struct</span> <span class='ident'>ArgGroup</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'ar</span><span class='op'>></span> {
|
||||
<span class='attribute'>#[<span class='ident'>doc</span>(<span class='ident'>hidden</span>)]</span>
|
||||
<span class='kw'>pub</span> <span class='ident'>name</span>: <span class='kw-2'>&</span><span class='lifetime'>'n</span> <span class='ident'>str</span>,
|
||||
<span class='attribute'>#[<span class='ident'>doc</span>(<span class='ident'>hidden</span>)]</span>
|
||||
<span class='kw'>pub</span> <span class='ident'>args</span>: <span class='ident'>HashSet</span><span class='op'><</span><span class='kw-2'>&</span><span class='lifetime'>'ar</span> <span class='ident'>str</span><span class='op'>></span>,
|
||||
<span class='attribute'>#[<span class='ident'>doc</span>(<span class='ident'>hidden</span>)]</span>
|
||||
<span class='kw'>pub</span> <span class='ident'>required</span>: <span class='ident'>bool</span>,
|
||||
<span class='attribute'>#[<span class='ident'>doc</span>(<span class='ident'>hidden</span>)]</span>
|
||||
<span class='kw'>pub</span> <span class='ident'>requires</span>: <span class='prelude-ty'>Option</span><span class='op'><</span><span class='ident'>HashSet</span><span class='op'><</span><span class='kw-2'>&</span><span class='lifetime'>'ar</span> <span class='ident'>str</span><span class='op'>>></span>,
|
||||
<span class='attribute'>#[<span class='ident'>doc</span>(<span class='ident'>hidden</span>)]</span>
|
||||
<span class='kw'>pub</span> <span class='ident'>conflicts</span>: <span class='prelude-ty'>Option</span><span class='op'><</span><span class='ident'>HashSet</span><span class='op'><</span><span class='kw-2'>&</span><span class='lifetime'>'ar</span> <span class='ident'>str</span><span class='op'>>></span>
|
||||
}
|
||||
|
||||
<span class='kw'>impl</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'ar</span><span class='op'>></span> <span class='ident'>ArgGroup</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'ar</span><span class='op'>></span> {
|
||||
<span class='doccomment'>/// Creates a new instace of `ArgGroup` using a unique string name. </span>
|
||||
<span class='doccomment'>/// The name will only be used by the library consumer and not displayed to the user</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>/// # Example</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>/// ```no_run</span>
|
||||
<span class='doccomment'>/// # use clap::{App, ArgGroup};</span>
|
||||
<span class='doccomment'>/// # let matches = App::new("myprog")</span>
|
||||
<span class='doccomment'>/// # .arg_group(</span>
|
||||
<span class='doccomment'>/// ArgGroup::with_name("conifg")</span>
|
||||
<span class='doccomment'>/// # ).get_matches();</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>with_name</span>(<span class='ident'>n</span>: <span class='kw-2'>&</span><span class='lifetime'>'n</span> <span class='ident'>str</span>) <span class='op'>-></span> <span class='ident'>ArgGroup</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'ar</span><span class='op'>></span> {
|
||||
<span class='ident'>ArgGroup</span> {
|
||||
<span class='ident'>name</span>: <span class='ident'>n</span>,
|
||||
<span class='ident'>required</span>: <span class='boolval'>false</span>,
|
||||
<span class='ident'>args</span>: <span class='ident'>HashSet</span>::<span class='ident'>new</span>(),
|
||||
<span class='ident'>requires</span>: <span class='prelude-val'>None</span>,
|
||||
<span class='ident'>conflicts</span>: <span class='prelude-val'>None</span>
|
||||
}
|
||||
}
|
||||
|
||||
<span class='doccomment'>/// Adds an argument to this group by name</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>/// # Example</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>/// ```no_run</span>
|
||||
<span class='doccomment'>/// # use clap::{App, ArgGroup};</span>
|
||||
<span class='doccomment'>/// # let matches = App::new("myprog")</span>
|
||||
<span class='doccomment'>/// # .arg_group(</span>
|
||||
<span class='doccomment'>/// # ArgGroup::with_name("conifg")</span>
|
||||
<span class='doccomment'>/// .add("config")</span>
|
||||
<span class='doccomment'>/// # ).get_matches();</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>add</span>(<span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>n</span>: <span class='kw-2'>&</span><span class='lifetime'>'ar</span> <span class='ident'>str</span>) <span class='op'>-></span> <span class='ident'>ArgGroup</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'ar</span><span class='op'>></span> {
|
||||
<span class='self'>self</span>.<span class='ident'>args</span>.<span class='ident'>insert</span>(<span class='ident'>n</span>);
|
||||
<span class='self'>self</span>
|
||||
}
|
||||
|
||||
<span class='doccomment'>/// Adds multiple arguments to this group by name inside a Vec</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>/// # Example</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>/// ```no_run</span>
|
||||
<span class='doccomment'>/// # use clap::{App, ArgGroup};</span>
|
||||
<span class='doccomment'>/// # let matches = App::new("myprog")</span>
|
||||
<span class='doccomment'>/// # .arg_group(</span>
|
||||
<span class='doccomment'>/// # ArgGroup::with_name("conifg")</span>
|
||||
<span class='doccomment'>/// .add_all(vec!["config", "input", "output"])</span>
|
||||
<span class='doccomment'>/// # ).get_matches();</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>add_all</span>(<span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>ns</span>: <span class='ident'>Vec</span><span class='op'><</span><span class='kw-2'>&</span><span class='lifetime'>'ar</span> <span class='ident'>str</span><span class='op'>></span>) <span class='op'>-></span> <span class='ident'>ArgGroup</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'ar</span><span class='op'>></span> {
|
||||
<span class='kw'>for</span> <span class='ident'>n</span> <span class='kw'>in</span> <span class='ident'>ns</span> {
|
||||
<span class='self'>self</span> <span class='op'>=</span> <span class='self'>self</span>.<span class='ident'>add</span>(<span class='ident'>n</span>);
|
||||
}
|
||||
<span class='self'>self</span>
|
||||
}
|
||||
|
||||
<span class='doccomment'>/// Sets the requirement of this group. A required group will be displayed in the usage string</span>
|
||||
<span class='doccomment'>/// of the application in the format `[arg|arg2|arg3]`. A required `ArgGroup` simply states</span>
|
||||
<span class='doccomment'>/// that one, and only one argument from this group *must* be present at runtime (unless</span>
|
||||
<span class='doccomment'>/// conflicting with another argument).</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>/// # Example</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>/// ```no_run</span>
|
||||
<span class='doccomment'>/// # use clap::{App, ArgGroup};</span>
|
||||
<span class='doccomment'>/// # let matches = App::new("myprog")</span>
|
||||
<span class='doccomment'>/// # .arg_group(</span>
|
||||
<span class='doccomment'>/// # ArgGroup::with_name("conifg")</span>
|
||||
<span class='doccomment'>/// .required(true)</span>
|
||||
<span class='doccomment'>/// # ).get_matches();</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>required</span>(<span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>r</span>: <span class='ident'>bool</span>) <span class='op'>-></span> <span class='ident'>ArgGroup</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'ar</span><span class='op'>></span> {
|
||||
<span class='self'>self</span>.<span class='ident'>required</span> <span class='op'>=</span> <span class='ident'>r</span>;
|
||||
<span class='self'>self</span>
|
||||
}
|
||||
|
||||
<span class='doccomment'>/// Sets the requirement rules of this group. This is not to be confused with a required group.</span>
|
||||
<span class='doccomment'>/// Requirement rules function just like argument requirement rules, you can name other arguments</span>
|
||||
<span class='doccomment'>/// or groups that must be present when one of the arguments from this group is used.</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>/// **NOTE:** The name provided may be an argument, or group name</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>/// # Example</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>/// ```no_run</span>
|
||||
<span class='doccomment'>/// # use clap::{App, ArgGroup};</span>
|
||||
<span class='doccomment'>/// # let matches = App::new("myprog")</span>
|
||||
<span class='doccomment'>/// # .arg_group(</span>
|
||||
<span class='doccomment'>/// # ArgGroup::with_name("conifg")</span>
|
||||
<span class='doccomment'>/// .requires("config")</span>
|
||||
<span class='doccomment'>/// # ).get_matches();</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>requires</span>(<span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>n</span>: <span class='kw-2'>&</span><span class='lifetime'>'ar</span> <span class='ident'>str</span>) <span class='op'>-></span> <span class='ident'>ArgGroup</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'ar</span><span class='op'>></span> {
|
||||
<span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='kw-2'>ref</span> <span class='kw-2'>mut</span> <span class='ident'>reqs</span>) <span class='op'>=</span> <span class='self'>self</span>.<span class='ident'>requires</span> {
|
||||
<span class='ident'>reqs</span>.<span class='ident'>insert</span>(<span class='ident'>n</span>);
|
||||
} <span class='kw'>else</span> {
|
||||
<span class='kw'>let</span> <span class='kw-2'>mut</span> <span class='ident'>hs</span> <span class='op'>=</span> <span class='ident'>HashSet</span>::<span class='ident'>new</span>();
|
||||
<span class='ident'>hs</span>.<span class='ident'>insert</span>(<span class='ident'>n</span>);
|
||||
<span class='self'>self</span>.<span class='ident'>requires</span> <span class='op'>=</span> <span class='prelude-val'>Some</span>(<span class='ident'>hs</span>);
|
||||
}
|
||||
<span class='self'>self</span>
|
||||
}
|
||||
|
||||
<span class='doccomment'>/// Sets the requirement rules of this group. This is not to be confused with a required group.</span>
|
||||
<span class='doccomment'>/// Requirement rules function just like argument requirement rules, you can name other arguments</span>
|
||||
<span class='doccomment'>/// or groups that must be present when one of the arguments from this group is used.</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>/// **NOTE:** The names provided may be an argument, or group name</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>/// # Example</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>/// ```no_run</span>
|
||||
<span class='doccomment'>/// # use clap::{App, ArgGroup};</span>
|
||||
<span class='doccomment'>/// # let matches = App::new("myprog")</span>
|
||||
<span class='doccomment'>/// # .arg_group(</span>
|
||||
<span class='doccomment'>/// # ArgGroup::with_name("conifg")</span>
|
||||
<span class='doccomment'>/// .requires_all(vec!["config", "input"])</span>
|
||||
<span class='doccomment'>/// # ).get_matches();</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>requires_all</span>(<span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>ns</span>: <span class='ident'>Vec</span><span class='op'><</span><span class='kw-2'>&</span><span class='lifetime'>'ar</span> <span class='ident'>str</span><span class='op'>></span>) <span class='op'>-></span> <span class='ident'>ArgGroup</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'ar</span><span class='op'>></span> {
|
||||
<span class='kw'>for</span> <span class='ident'>n</span> <span class='kw'>in</span> <span class='ident'>ns</span> {
|
||||
<span class='self'>self</span> <span class='op'>=</span> <span class='self'>self</span>.<span class='ident'>requires</span>(<span class='ident'>n</span>);
|
||||
}
|
||||
<span class='self'>self</span>
|
||||
}
|
||||
|
||||
<span class='doccomment'>/// Sets the exclusion rules of this group. Exclusion rules function just like argument exclusion </span>
|
||||
<span class='doccomment'>/// rules, you can name other arguments or groups that must not be present when one of the arguments</span>
|
||||
<span class='doccomment'>/// from this group are used.</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>/// **NOTE:** The name provided may be an argument, or group name</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>/// # Example</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>/// ```no_run</span>
|
||||
<span class='doccomment'>/// # use clap::{App, ArgGroup};</span>
|
||||
<span class='doccomment'>/// # let matches = App::new("myprog")</span>
|
||||
<span class='doccomment'>/// # .arg_group(</span>
|
||||
<span class='doccomment'>/// # ArgGroup::with_name("conifg")</span>
|
||||
<span class='doccomment'>/// .conflicts_with("config")</span>
|
||||
<span class='doccomment'>/// # ).get_matches();</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>conflicts_with</span>(<span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>n</span>: <span class='kw-2'>&</span><span class='lifetime'>'ar</span> <span class='ident'>str</span>) <span class='op'>-></span> <span class='ident'>ArgGroup</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'ar</span><span class='op'>></span> {
|
||||
<span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='kw-2'>ref</span> <span class='kw-2'>mut</span> <span class='ident'>confs</span>) <span class='op'>=</span> <span class='self'>self</span>.<span class='ident'>conflicts</span> {
|
||||
<span class='ident'>confs</span>.<span class='ident'>insert</span>(<span class='ident'>n</span>);
|
||||
} <span class='kw'>else</span> {
|
||||
<span class='kw'>let</span> <span class='kw-2'>mut</span> <span class='ident'>hs</span> <span class='op'>=</span> <span class='ident'>HashSet</span>::<span class='ident'>new</span>();
|
||||
<span class='ident'>hs</span>.<span class='ident'>insert</span>(<span class='ident'>n</span>);
|
||||
<span class='self'>self</span>.<span class='ident'>conflicts</span> <span class='op'>=</span> <span class='prelude-val'>Some</span>(<span class='ident'>hs</span>);
|
||||
}
|
||||
<span class='self'>self</span>
|
||||
}
|
||||
|
||||
<span class='doccomment'>/// Sets the exclusion rules of this group. Exclusion rules function just like argument exclusion </span>
|
||||
<span class='doccomment'>/// rules, you can name other arguments or groups that must not be present when one of the arguments</span>
|
||||
<span class='doccomment'>/// from this group are used.</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>/// **NOTE:** The names provided may be an argument, or group name</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>/// # Example</span>
|
||||
<span class='doccomment'>///</span>
|
||||
<span class='doccomment'>/// ```no_run</span>
|
||||
<span class='doccomment'>/// # use clap::{App, ArgGroup};</span>
|
||||
<span class='doccomment'>/// # let matches = App::new("myprog")</span>
|
||||
<span class='doccomment'>/// # .arg_group(</span>
|
||||
<span class='doccomment'>/// # ArgGroup::with_name("conifg")</span>
|
||||
<span class='doccomment'>/// .conflicts_with_all(vec!["config", "input"])</span>
|
||||
<span class='doccomment'>/// # ).get_matches();</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>conflicts_with_all</span>(<span class='kw-2'>mut</span> <span class='self'>self</span>, <span class='ident'>ns</span>: <span class='ident'>Vec</span><span class='op'><</span><span class='kw-2'>&</span><span class='lifetime'>'ar</span> <span class='ident'>str</span><span class='op'>></span>) <span class='op'>-></span> <span class='ident'>ArgGroup</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'ar</span><span class='op'>></span> {
|
||||
<span class='kw'>for</span> <span class='ident'>n</span> <span class='kw'>in</span> <span class='ident'>ns</span> {
|
||||
<span class='self'>self</span> <span class='op'>=</span> <span class='self'>self</span>.<span class='ident'>conflicts_with</span>(<span class='ident'>n</span>);
|
||||
}
|
||||
<span class='self'>self</span>
|
||||
}
|
||||
}
|
||||
|
||||
<span class='kw'>impl</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'ar</span><span class='op'>></span> <span class='ident'>Debug</span> <span class='kw'>for</span> <span class='ident'>ArgGroup</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'ar</span><span class='op'>></span> {
|
||||
<span class='kw'>fn</span> <span class='ident'>fmt</span>(<span class='kw-2'>&</span><span class='self'>self</span>, <span class='ident'>f</span>: <span class='kw-2'>&</span><span class='kw-2'>mut</span> <span class='ident'>Formatter</span>) <span class='op'>-></span> <span class='prelude-ty'>Result</span> {
|
||||
<span class='macro'>write</span><span class='macro'>!</span>(<span class='ident'>f</span>, <span class='string'>"{{
|
||||
name:{:?},
|
||||
args: {:?},
|
||||
required: {:?},
|
||||
requires: {:?},
|
||||
conflicts: {:?},
|
||||
}}"</span>, <span class='self'>self</span>.<span class='ident'>name</span>, <span class='self'>self</span>.<span class='ident'>args</span>, <span class='self'>self</span>.<span class='ident'>required</span>, <span class='self'>self</span>.<span class='ident'>requires</span>, <span class='self'>self</span>.<span class='ident'>conflicts</span>)
|
||||
}
|
||||
}
|
||||
|
||||
</pre>
|
||||
</section>
|
||||
<section id='search' class="content hidden"></section>
|
||||
|
||||
<section class="footer"></section>
|
||||
|
||||
<div id="help" class="hidden">
|
||||
<div class="shortcuts">
|
||||
<h1>Keyboard shortcuts</h1>
|
||||
<dl>
|
||||
<dt>?</dt>
|
||||
<dd>Show this help dialog</dd>
|
||||
<dt>S</dt>
|
||||
<dd>Focus the search field</dd>
|
||||
<dt>⇤</dt>
|
||||
<dd>Move up in search results</dd>
|
||||
<dt>⇥</dt>
|
||||
<dd>Move down in search results</dd>
|
||||
<dt>⏎</dt>
|
||||
<dd>Go to active search result</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="infos">
|
||||
<h1>Search tricks</h1>
|
||||
<p>
|
||||
Prefix searches with a type followed by a colon (e.g.
|
||||
<code>fn:</code>) to restrict the search to a given type.
|
||||
</p>
|
||||
<p>
|
||||
Accepted types are: <code>fn</code>, <code>mod</code>,
|
||||
<code>struct</code>, <code>enum</code>,
|
||||
<code>trait</code>, <code>typedef</code> (or
|
||||
<code>tdef</code>).
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
window.rootPath = "../../../";
|
||||
window.currentCrate = "clap";
|
||||
window.playgroundUrl = "";
|
||||
</script>
|
||||
<script src="../../../jquery.js"></script>
|
||||
<script src="../../../main.js"></script>
|
||||
|
||||
<script async src="../../../search-index.js"></script>
|
||||
</body>
|
||||
</html>
|
|
@ -51,18 +51,22 @@
|
|||
<span id="9"> 9</span>
|
||||
<span id="10">10</span>
|
||||
<span id="11">11</span>
|
||||
<span id="12">12</span>
|
||||
<span id="13">13</span>
|
||||
</pre><pre class='rust '>
|
||||
<span class='kw'>pub</span> <span class='kw'>use</span> <span class='self'>self</span>::<span class='ident'>arg</span>::<span class='ident'>Arg</span>;
|
||||
<span class='kw'>pub</span> <span class='kw'>use</span> <span class='self'>self</span>::<span class='ident'>argmatches</span>::<span class='ident'>ArgMatches</span>;
|
||||
<span class='kw'>pub</span> <span class='kw'>use</span> <span class='self'>self</span>::<span class='ident'>subcommand</span>::<span class='ident'>SubCommand</span>;
|
||||
<span class='kw'>pub</span> <span class='kw'>use</span> <span class='self'>self</span>::<span class='ident'>argbuilder</span>::{<span class='ident'>FlagBuilder</span>, <span class='ident'>OptBuilder</span>, <span class='ident'>PosBuilder</span>};
|
||||
<span class='kw'>pub</span> <span class='kw'>use</span> <span class='self'>self</span>::<span class='ident'>matchedarg</span>::<span class='ident'>MatchedArg</span>;
|
||||
<span class='kw'>pub</span> <span class='kw'>use</span> <span class='self'>self</span>::<span class='ident'>group</span>::<span class='ident'>ArgGroup</span>;
|
||||
|
||||
<span class='kw'>mod</span> <span class='ident'>arg</span>;
|
||||
<span class='kw'>mod</span> <span class='ident'>argmatches</span>;
|
||||
<span class='kw'>mod</span> <span class='ident'>subcommand</span>;
|
||||
<span class='kw'>mod</span> <span class='ident'>argbuilder</span>;
|
||||
<span class='kw'>mod</span> <span class='ident'>matchedarg</span>;
|
||||
<span class='kw'>mod</span> <span class='ident'>group</span>;
|
||||
</pre>
|
||||
</section>
|
||||
<section id='search' class="content hidden"></section>
|
||||
|
|
|
@ -106,12 +106,12 @@
|
|||
<span class='doccomment'>/// .help("The configuration file to use")</span>
|
||||
<span class='doccomment'>/// .index(1))</span>
|
||||
<span class='doccomment'>/// # ).get_matches();</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>struct</span> <span class='ident'>SubCommand</span><span class='op'><</span><span class='lifetime'>'a</span><span class='op'>></span> {
|
||||
<span class='kw'>pub</span> <span class='ident'>name</span>: <span class='ident'>String</span>,
|
||||
<span class='kw'>pub</span> <span class='ident'>matches</span>: <span class='ident'>ArgMatches</span><span class='op'><</span><span class='lifetime'>'a</span><span class='op'>></span>
|
||||
<span class='kw'>pub</span> <span class='kw'>struct</span> <span class='ident'>SubCommand</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'a</span><span class='op'>></span> {
|
||||
<span class='kw'>pub</span> <span class='ident'>name</span>: <span class='kw-2'>&</span><span class='lifetime'>'n</span> <span class='ident'>str</span>,
|
||||
<span class='kw'>pub</span> <span class='ident'>matches</span>: <span class='ident'>ArgMatches</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'a</span><span class='op'>></span>
|
||||
}
|
||||
|
||||
<span class='kw'>impl</span><span class='op'><</span><span class='lifetime'>'a</span><span class='op'>></span> <span class='ident'>SubCommand</span><span class='op'><</span><span class='lifetime'>'a</span><span class='op'>></span> {
|
||||
<span class='kw'>impl</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'a</span><span class='op'>></span> <span class='ident'>SubCommand</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'a</span><span class='op'>></span> {
|
||||
<span class='doccomment'>/// Creates a new instance of a subcommand requiring a name. Will be displayed</span>
|
||||
<span class='doccomment'>/// to the user when they print version or help and usage information.</span>
|
||||
<span class='doccomment'>///</span>
|
||||
|
@ -123,7 +123,7 @@
|
|||
<span class='doccomment'>/// SubCommand::new("config")</span>
|
||||
<span class='doccomment'>/// # ).get_matches();</span>
|
||||
<span class='doccomment'>/// ```</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>new</span><span class='op'><</span><span class='lifetime'>'n</span>, <span class='lifetime'>'au</span>, <span class='lifetime'>'v</span>, <span class='lifetime'>'ab</span>, <span class='lifetime'>'u</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'ar</span><span class='op'>></span>(<span class='ident'>name</span>: <span class='kw-2'>&</span><span class='lifetime'>'n</span> <span class='ident'>str</span>) <span class='op'>-></span> <span class='ident'>App</span><span class='op'><</span><span class='lifetime'>'au</span>, <span class='lifetime'>'v</span>, <span class='lifetime'>'ab</span>, <span class='lifetime'>'u</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'ar</span><span class='op'>></span> {
|
||||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>new</span><span class='op'><</span><span class='lifetime'>'au</span>, <span class='lifetime'>'v</span>, <span class='lifetime'>'ab</span>, <span class='lifetime'>'u</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'ar</span><span class='op'>></span>(<span class='ident'>name</span>: <span class='kw-2'>&</span><span class='lifetime'>'ar</span> <span class='ident'>str</span>) <span class='op'>-></span> <span class='ident'>App</span><span class='op'><</span><span class='lifetime'>'au</span>, <span class='lifetime'>'v</span>, <span class='lifetime'>'ab</span>, <span class='lifetime'>'u</span>, <span class='lifetime'>'h</span>, <span class='lifetime'>'ar</span><span class='op'>></span> {
|
||||
<span class='ident'>App</span>::<span class='ident'>new</span>(<span class='ident'>name</span>)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1265,7 +1265,7 @@
|
|||
<span class='doccomment'>//! </span>
|
||||
<span class='doccomment'>//! `clap` is licensed under the MIT license. Please the LICENSE-MIT file in this repository for more information.</span>
|
||||
|
||||
<span class='kw'>pub</span> <span class='kw'>use</span> <span class='ident'>args</span>::{<span class='ident'>Arg</span>, <span class='ident'>SubCommand</span>, <span class='ident'>ArgMatches</span>};
|
||||
<span class='kw'>pub</span> <span class='kw'>use</span> <span class='ident'>args</span>::{<span class='ident'>Arg</span>, <span class='ident'>SubCommand</span>, <span class='ident'>ArgMatches</span>, <span class='ident'>ArgGroup</span>};
|
||||
<span class='kw'>pub</span> <span class='kw'>use</span> <span class='ident'>app</span>::<span class='ident'>App</span>;
|
||||
|
||||
<span class='attribute'>#[<span class='ident'>macro_use</span>]</span>
|
||||
|
|
|
@ -448,6 +448,61 @@
|
|||
<span id="406">406</span>
|
||||
<span id="407">407</span>
|
||||
<span id="408">408</span>
|
||||
<span id="409">409</span>
|
||||
<span id="410">410</span>
|
||||
<span id="411">411</span>
|
||||
<span id="412">412</span>
|
||||
<span id="413">413</span>
|
||||
<span id="414">414</span>
|
||||
<span id="415">415</span>
|
||||
<span id="416">416</span>
|
||||
<span id="417">417</span>
|
||||
<span id="418">418</span>
|
||||
<span id="419">419</span>
|
||||
<span id="420">420</span>
|
||||
<span id="421">421</span>
|
||||
<span id="422">422</span>
|
||||
<span id="423">423</span>
|
||||
<span id="424">424</span>
|
||||
<span id="425">425</span>
|
||||
<span id="426">426</span>
|
||||
<span id="427">427</span>
|
||||
<span id="428">428</span>
|
||||
<span id="429">429</span>
|
||||
<span id="430">430</span>
|
||||
<span id="431">431</span>
|
||||
<span id="432">432</span>
|
||||
<span id="433">433</span>
|
||||
<span id="434">434</span>
|
||||
<span id="435">435</span>
|
||||
<span id="436">436</span>
|
||||
<span id="437">437</span>
|
||||
<span id="438">438</span>
|
||||
<span id="439">439</span>
|
||||
<span id="440">440</span>
|
||||
<span id="441">441</span>
|
||||
<span id="442">442</span>
|
||||
<span id="443">443</span>
|
||||
<span id="444">444</span>
|
||||
<span id="445">445</span>
|
||||
<span id="446">446</span>
|
||||
<span id="447">447</span>
|
||||
<span id="448">448</span>
|
||||
<span id="449">449</span>
|
||||
<span id="450">450</span>
|
||||
<span id="451">451</span>
|
||||
<span id="452">452</span>
|
||||
<span id="453">453</span>
|
||||
<span id="454">454</span>
|
||||
<span id="455">455</span>
|
||||
<span id="456">456</span>
|
||||
<span id="457">457</span>
|
||||
<span id="458">458</span>
|
||||
<span id="459">459</span>
|
||||
<span id="460">460</span>
|
||||
<span id="461">461</span>
|
||||
<span id="462">462</span>
|
||||
<span id="463">463</span>
|
||||
</pre><pre class='rust '>
|
||||
<span class='comment'>// De-duplication macro used in src/app.rs</span>
|
||||
<span class='macro'>macro_rules</span><span class='macro'>!</span> <span class='ident'>get_help</span> {
|
||||
|
@ -465,6 +520,61 @@
|
|||
};
|
||||
}
|
||||
|
||||
<span class='comment'>// De-duplication macro used in src/app.rs</span>
|
||||
<span class='macro'>macro_rules</span><span class='macro'>!</span> <span class='ident'>parse_group_reqs</span> {
|
||||
(<span class='macro-nonterminal'>$</span><span class='macro-nonterminal'>me</span>:<span class='ident'>ident</span>, <span class='macro-nonterminal'>$</span><span class='macro-nonterminal'>arg</span>:<span class='ident'>ident</span>) <span class='op'>=></span> {
|
||||
<span class='kw'>for</span> <span class='ident'>ag</span> <span class='kw'>in</span> <span class='macro-nonterminal'>$</span><span class='macro-nonterminal'>me</span>.<span class='ident'>groups</span>.<span class='ident'>values</span>() {
|
||||
<span class='kw'>let</span> <span class='kw-2'>mut</span> <span class='ident'>found</span> <span class='op'>=</span> <span class='boolval'>false</span>;
|
||||
<span class='kw'>for</span> <span class='ident'>name</span> <span class='kw'>in</span> <span class='ident'>ag</span>.<span class='ident'>args</span>.<span class='ident'>iter</span>() {
|
||||
<span class='kw'>if</span> <span class='ident'>name</span> <span class='op'>==</span> <span class='kw-2'>&</span><span class='macro-nonterminal'>$</span><span class='macro-nonterminal'>arg</span>.<span class='ident'>name</span> {
|
||||
<span class='macro-nonterminal'>$</span><span class='macro-nonterminal'>me</span>.<span class='ident'>required</span>.<span class='ident'>remove</span>(<span class='ident'>ag</span>.<span class='ident'>name</span>);
|
||||
<span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='kw-2'>ref</span> <span class='ident'>reqs</span>) <span class='op'>=</span> <span class='ident'>ag</span>.<span class='ident'>requires</span> {
|
||||
<span class='kw'>for</span> <span class='ident'>r</span> <span class='kw'>in</span> <span class='ident'>reqs</span> {
|
||||
<span class='macro-nonterminal'>$</span><span class='macro-nonterminal'>me</span>.<span class='ident'>required</span>.<span class='ident'>insert</span>(<span class='ident'>r</span>);
|
||||
}
|
||||
}
|
||||
<span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='kw-2'>ref</span> <span class='ident'>bl</span>) <span class='op'>=</span> <span class='ident'>ag</span>.<span class='ident'>conflicts</span> {
|
||||
<span class='kw'>for</span> <span class='ident'>b</span> <span class='kw'>in</span> <span class='ident'>bl</span> {
|
||||
<span class='macro-nonterminal'>$</span><span class='macro-nonterminal'>me</span>.<span class='ident'>blacklist</span>.<span class='ident'>insert</span>(<span class='ident'>b</span>);
|
||||
}
|
||||
}
|
||||
<span class='ident'>found</span> <span class='op'>=</span> <span class='boolval'>true</span>;
|
||||
<span class='kw'>break</span>;
|
||||
}
|
||||
}
|
||||
<span class='kw'>if</span> <span class='ident'>found</span> {
|
||||
<span class='kw'>for</span> <span class='ident'>name</span> <span class='kw'>in</span> <span class='ident'>ag</span>.<span class='ident'>args</span>.<span class='ident'>iter</span>() {
|
||||
<span class='kw'>if</span> <span class='ident'>name</span> <span class='op'>==</span> <span class='kw-2'>&</span><span class='macro-nonterminal'>$</span><span class='macro-nonterminal'>arg</span>.<span class='ident'>name</span> { <span class='kw'>continue</span> }
|
||||
<span class='macro-nonterminal'>$</span><span class='macro-nonterminal'>me</span>.<span class='ident'>required</span>.<span class='ident'>remove</span>(<span class='ident'>name</span>);
|
||||
<span class='macro-nonterminal'>$</span><span class='macro-nonterminal'>me</span>.<span class='ident'>blacklist</span>.<span class='ident'>insert</span>(<span class='ident'>name</span>);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
<span class='comment'>// De-duplication macro used in src/app.rs</span>
|
||||
<span class='macro'>macro_rules</span><span class='macro'>!</span> <span class='ident'>validate_reqs</span> {
|
||||
(<span class='macro-nonterminal'>$</span><span class='macro-nonterminal'>me</span>:<span class='ident'>ident</span>, <span class='macro-nonterminal'>$</span><span class='macro-nonterminal'>t</span>:<span class='ident'>ident</span>, <span class='macro-nonterminal'>$</span><span class='macro-nonterminal'>m</span>:<span class='ident'>ident</span>, <span class='macro-nonterminal'>$</span><span class='macro-nonterminal'>n</span>:<span class='ident'>ident</span>) <span class='op'>=></span> {
|
||||
<span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='ident'>a</span>) <span class='op'>=</span> <span class='macro-nonterminal'>$</span><span class='macro-nonterminal'>me</span>.<span class='macro-nonterminal'>$</span><span class='macro-nonterminal'>t</span>.<span class='ident'>get</span>(<span class='macro-nonterminal'>$</span><span class='macro-nonterminal'>n</span>) {
|
||||
<span class='kw'>if</span> <span class='kw'>let</span> <span class='prelude-val'>Some</span>(<span class='kw-2'>ref</span> <span class='ident'>bl</span>) <span class='op'>=</span> <span class='ident'>a</span>.<span class='ident'>blacklist</span> {
|
||||
<span class='kw'>for</span> <span class='ident'>n</span> <span class='kw'>in</span> <span class='ident'>bl</span>.<span class='ident'>iter</span>() {
|
||||
<span class='kw'>if</span> <span class='macro-nonterminal'>$</span><span class='macro-nonterminal'>m</span>.<span class='ident'>args</span>.<span class='ident'>contains_key</span>(<span class='ident'>n</span>) {
|
||||
<span class='kw'>return</span> <span class='boolval'>false</span>
|
||||
} <span class='kw'>else</span> <span class='kw'>if</span> <span class='macro-nonterminal'>$</span><span class='macro-nonterminal'>me</span>.<span class='ident'>groups</span>.<span class='ident'>contains_key</span>(<span class='ident'>n</span>) {
|
||||
<span class='kw'>let</span> <span class='ident'>grp</span> <span class='op'>=</span> <span class='macro-nonterminal'>$</span><span class='macro-nonterminal'>me</span>.<span class='ident'>groups</span>.<span class='ident'>get</span>(<span class='ident'>n</span>).<span class='ident'>unwrap</span>();
|
||||
<span class='kw'>for</span> <span class='ident'>an</span> <span class='kw'>in</span> <span class='ident'>grp</span>.<span class='ident'>args</span>.<span class='ident'>iter</span>() {
|
||||
<span class='kw'>if</span> <span class='macro-nonterminal'>$</span><span class='macro-nonterminal'>m</span>.<span class='ident'>args</span>.<span class='ident'>contains_key</span>(<span class='ident'>an</span>) {
|
||||
<span class='kw'>return</span> <span class='boolval'>false</span>
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
<span class='comment'>// Thanks to bluss and flan3002 in #rust IRC</span>
|
||||
<span class='comment'>//</span>
|
||||
<span class='comment'>// Helps with rightward drift when iterating over something and matching each item.</span>
|
||||
|
|
Loading…
Add table
Reference in a new issue