blob: de4db1f41a8110d130aeba126cc75669d94e6a80 [file] [log] [blame]
<!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="`ArgGroup`s are a family of related arguments and way for you to express, “Any of these arguments”. By placing arguments in a logical group, you can create easier requirement and exclusion rules instead of having to list each argument individually, or when you want a rule to apply “any but not all” arguments."><meta name="keywords" content="rust, rustlang, rust-lang, ArgGroup"><title>ArgGroup in clap - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" href="../normalize.css"><link rel="stylesheet" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" href="../ayu.css" disabled><link rel="stylesheet" href="../dark.css" disabled><link rel="stylesheet" href="../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../storage.js"></script><script defer src="sidebar-items.js"></script><script defer src="../main.js"></script><noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">&#9776;</button><a class="sidebar-logo" href="../clap/index.html"><div class="logo-container"><img class="rust-logo" src="../rust-logo.svg" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../clap/index.html"><div class="logo-container"><img class="rust-logo" src="../rust-logo.svg" alt="logo"></div></a><h2 class="location"><a href="#">ArgGroup</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.arg">arg</a></li><li><a href="#method.args">args</a></li><li><a href="#method.conflicts_with">conflicts_with</a></li><li><a href="#method.conflicts_with_all">conflicts_with_all</a></li><li><a href="#method.multiple">multiple</a></li><li><a href="#method.required">required</a></li><li><a href="#method.requires">requires</a></li><li><a href="#method.requires_all">requires_all</a></li><li><a href="#method.with_name">with_name</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-ArgGroup%3C%27a%3E">Clone</a></li><li><a href="#impl-Debug-for-ArgGroup%3C%27a%3E">Debug</a></li><li><a href="#impl-Default-for-ArgGroup%3C%27a%3E">Default</a></li><li><a href="#impl-From%3C%26%27z%20ArgGroup%3C%27a%3E%3E-for-ArgGroup%3C%27a%3E">From&lt;&amp;&#39;z ArgGroup&lt;&#39;a&gt;&gt;</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-ArgGroup%3C%27a%3E">RefUnwindSafe</a></li><li><a href="#impl-Send-for-ArgGroup%3C%27a%3E">Send</a></li><li><a href="#impl-Sync-for-ArgGroup%3C%27a%3E">Sync</a></li><li><a href="#impl-Unpin-for-ArgGroup%3C%27a%3E">Unpin</a></li><li><a href="#impl-UnwindSafe-for-ArgGroup%3C%27a%3E">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-ArgGroup%3C%27a%3E">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-ArgGroup%3C%27a%3E">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-ArgGroup%3C%27a%3E">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-ArgGroup%3C%27a%3E">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-ArgGroup%3C%27a%3E">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-ArgGroup%3C%27a%3E">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-ArgGroup%3C%27a%3E">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-ArgGroup%3C%27a%3E">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In clap</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../wheel.svg"></a></div></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="index.html">clap</a>::<wbr><a class="struct" href="#">ArgGroup</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../clipboard.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../src/clap/args/group.rs.html#81-94">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">&#x2212;</span>]</a></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct ArgGroup&lt;'a&gt; { /* private fields */ }</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p><code>ArgGroup</code>s are a family of related <a href="./struct.Arg.html">arguments</a> and way for you to express, “Any of these
arguments”. By placing arguments in a logical group, you can create easier requirement and
exclusion rules instead of having to list each argument individually, or when you want a rule
to apply “any but not all” arguments.</p>
<p>For instance, you can make an entire <code>ArgGroup</code> required. If <a href="./struct.ArgGroup.html#method.multiple"><code>ArgGroup::multiple(true)</code></a> is
set, this means that at least one argument from that group must be present. If
[<code>ArgGroup::multiple(false)</code>] is set (the default), one and <em>only</em> one must be present.</p>
<p>You can also do things such as name an entire <code>ArgGroup</code> as a <a href="./struct.Arg.html#method.conflicts_with">conflict</a> or <a href="./struct.Arg.html#method.requires">requirement</a> for
another argument, 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 <code>ArgGroup</code>s is to require one and <em>only</em> one argument to be
present out of a given set. Imagine that you had multiple arguments, and you want one of them
to be required, but making all of them required isn’t feasible because perhaps they conflict
with each other. For example, lets say that you were building an application where one could
set a given version number by supplying a string with an option argument, i.e.
<code>--set-ver v1.2.3</code>, you also wanted to support automatically using a previous version number
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 you want to
specify that <em>at least one</em> of them is used. For this, you can create a group.</p>
<p>Finally, you may use <code>ArgGroup</code>s to pull a value from a group of arguments when you don’t care
exactly which argument was actually used at runtime.</p>
<h2 id="examples"><a href="#examples">Examples</a></h2>
<p>The following example demonstrates using an <code>ArgGroup</code> to ensure that one, and only one, of
the arguments from the specified group is present at runtime.</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>result = App::new(<span class="string">&quot;app&quot;</span>)
.args_from_usage(
<span class="string">&quot;--set-ver [ver] &#39;set the version manually&#39;
--major &#39;auto increase major&#39;
--minor &#39;auto increase minor&#39;
--patch &#39;auto increase patch&#39;&quot;</span>)
.group(ArgGroup::with_name(<span class="string">&quot;vers&quot;</span>)
.args(<span class="kw-2">&amp;</span>[<span class="string">&quot;set-ver&quot;</span>, <span class="string">&quot;major&quot;</span>, <span class="string">&quot;minor&quot;</span>, <span class="string">&quot;patch&quot;</span>])
.required(<span class="bool-val">true</span>))
.get_matches_from_safe(<span class="macro">vec!</span>[<span class="string">&quot;app&quot;</span>, <span class="string">&quot;--major&quot;</span>, <span class="string">&quot;--patch&quot;</span>]);
<span class="comment">// Because we used two args in the group it&#39;s an error
</span><span class="macro">assert!</span>(result.is_err());
<span class="kw">let </span>err = result.unwrap_err();
<span class="macro">assert_eq!</span>(err.kind, ErrorKind::ArgumentConflict);</code></pre></div>
<p>This next example shows a passing parse of the same scenario</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>result = App::new(<span class="string">&quot;app&quot;</span>)
.args_from_usage(
<span class="string">&quot;--set-ver [ver] &#39;set the version manually&#39;
--major &#39;auto increase major&#39;
--minor &#39;auto increase minor&#39;
--patch &#39;auto increase patch&#39;&quot;</span>)
.group(ArgGroup::with_name(<span class="string">&quot;vers&quot;</span>)
.args(<span class="kw-2">&amp;</span>[<span class="string">&quot;set-ver&quot;</span>, <span class="string">&quot;major&quot;</span>, <span class="string">&quot;minor&quot;</span>,<span class="string">&quot;patch&quot;</span>])
.required(<span class="bool-val">true</span>))
.get_matches_from_safe(<span class="macro">vec!</span>[<span class="string">&quot;app&quot;</span>, <span class="string">&quot;--major&quot;</span>]);
<span class="macro">assert!</span>(result.is_ok());
<span class="kw">let </span>matches = result.unwrap();
<span class="comment">// We may not know which of the args was used, so we can test for the group...
</span><span class="macro">assert!</span>(matches.is_present(<span class="string">&quot;vers&quot;</span>));
<span class="comment">// we could also alternatively check each arg individually (not shown here)</span></code></pre></div>
</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-ArgGroup%3C%27a%3E" class="impl has-srclink"><a class="srclink rightside" href="../src/clap/args/group.rs.html#96-428">source</a><a href="#impl-ArgGroup%3C%27a%3E" class="anchor"></a><h3 class="code-header">impl&lt;'a&gt; <a class="struct" href="struct.ArgGroup.html" title="struct clap::ArgGroup">ArgGroup</a>&lt;'a&gt;</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.with_name" class="method has-srclink"><a class="srclink rightside" href="../src/clap/args/group.rs.html#107-116">source</a><h4 class="code-header">pub fn <a href="#method.with_name" class="fnname">with_name</a>(n: &amp;'a <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Creates a new instance of <code>ArgGroup</code> using a unique string name. The name will be used to
get values from the group or refer to the group inside of conflict and requirement rules.</p>
<h5 id="examples-1"><a href="#examples-1">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code>ArgGroup::with_name(<span class="string">&quot;config&quot;</span>)</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.arg" class="method has-srclink"><a class="srclink rightside" href="../src/clap/args/group.rs.html#157-165">source</a><h4 class="code-header">pub fn <a href="#method.arg" class="fnname">arg</a>(self, n: &amp;'a <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Adds an <a href="./struct.Arg.html">argument</a> to this group by name</p>
<h5 id="examples-2"><a href="#examples-2">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>m = App::new(<span class="string">&quot;myprog&quot;</span>)
.arg(Arg::with_name(<span class="string">&quot;flag&quot;</span>)
.short(<span class="string">&quot;f&quot;</span>))
.arg(Arg::with_name(<span class="string">&quot;color&quot;</span>)
.short(<span class="string">&quot;c&quot;</span>))
.group(ArgGroup::with_name(<span class="string">&quot;req_flags&quot;</span>)
.arg(<span class="string">&quot;flag&quot;</span>)
.arg(<span class="string">&quot;color&quot;</span>))
.get_matches_from(<span class="macro">vec!</span>[<span class="string">&quot;myprog&quot;</span>, <span class="string">&quot;-f&quot;</span>]);
<span class="comment">// maybe we don&#39;t know which of the two flags was used...
</span><span class="macro">assert!</span>(m.is_present(<span class="string">&quot;req_flags&quot;</span>));
<span class="comment">// but we can also check individually if needed
</span><span class="macro">assert!</span>(m.is_present(<span class="string">&quot;flag&quot;</span>));</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.args" class="method has-srclink"><a class="srclink rightside" href="../src/clap/args/group.rs.html#187-192">source</a><h4 class="code-header">pub fn <a href="#method.args" class="fnname">args</a>(self, ns: &amp;[&amp;'a <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>]) -&gt; Self</h4></section></summary><div class="docblock"><p>Adds multiple <a href="./struct.Arg.html">arguments</a> to this group by name</p>
<h5 id="examples-3"><a href="#examples-3">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>m = App::new(<span class="string">&quot;myprog&quot;</span>)
.arg(Arg::with_name(<span class="string">&quot;flag&quot;</span>)
.short(<span class="string">&quot;f&quot;</span>))
.arg(Arg::with_name(<span class="string">&quot;color&quot;</span>)
.short(<span class="string">&quot;c&quot;</span>))
.group(ArgGroup::with_name(<span class="string">&quot;req_flags&quot;</span>)
.args(<span class="kw-2">&amp;</span>[<span class="string">&quot;flag&quot;</span>, <span class="string">&quot;color&quot;</span>]))
.get_matches_from(<span class="macro">vec!</span>[<span class="string">&quot;myprog&quot;</span>, <span class="string">&quot;-f&quot;</span>]);
<span class="comment">// maybe we don&#39;t know which of the two flags was used...
</span><span class="macro">assert!</span>(m.is_present(<span class="string">&quot;req_flags&quot;</span>));
<span class="comment">// but we can also check individually if needed
</span><span class="macro">assert!</span>(m.is_present(<span class="string">&quot;flag&quot;</span>));</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.multiple" class="method has-srclink"><a class="srclink rightside" href="../src/clap/args/group.rs.html#234-237">source</a><h4 class="code-header">pub fn <a href="#method.multiple" class="fnname">multiple</a>(self, m: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Allows more than one of the <a href="./struct.Arg.html">‘Arg’</a>s in this group to be used. (Default: <code>false</code>)</p>
<h5 id="examples-4"><a href="#examples-4">Examples</a></h5>
<p>Notice in this example we use <em>both</em> the <code>-f</code> and <code>-c</code> flags which are both part of the
group</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>m = App::new(<span class="string">&quot;myprog&quot;</span>)
.arg(Arg::with_name(<span class="string">&quot;flag&quot;</span>)
.short(<span class="string">&quot;f&quot;</span>))
.arg(Arg::with_name(<span class="string">&quot;color&quot;</span>)
.short(<span class="string">&quot;c&quot;</span>))
.group(ArgGroup::with_name(<span class="string">&quot;req_flags&quot;</span>)
.args(<span class="kw-2">&amp;</span>[<span class="string">&quot;flag&quot;</span>, <span class="string">&quot;color&quot;</span>])
.multiple(<span class="bool-val">true</span>))
.get_matches_from(<span class="macro">vec!</span>[<span class="string">&quot;myprog&quot;</span>, <span class="string">&quot;-f&quot;</span>, <span class="string">&quot;-c&quot;</span>]);
<span class="comment">// maybe we don&#39;t know which of the two flags was used...
</span><span class="macro">assert!</span>(m.is_present(<span class="string">&quot;req_flags&quot;</span>));</code></pre></div>
<p>In this next example, we show the default behavior (i.e. `multiple(false)) which will throw
an error if more than one of the args in the group was used.</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>result = App::new(<span class="string">&quot;myprog&quot;</span>)
.arg(Arg::with_name(<span class="string">&quot;flag&quot;</span>)
.short(<span class="string">&quot;f&quot;</span>))
.arg(Arg::with_name(<span class="string">&quot;color&quot;</span>)
.short(<span class="string">&quot;c&quot;</span>))
.group(ArgGroup::with_name(<span class="string">&quot;req_flags&quot;</span>)
.args(<span class="kw-2">&amp;</span>[<span class="string">&quot;flag&quot;</span>, <span class="string">&quot;color&quot;</span>]))
.get_matches_from_safe(<span class="macro">vec!</span>[<span class="string">&quot;myprog&quot;</span>, <span class="string">&quot;-f&quot;</span>, <span class="string">&quot;-c&quot;</span>]);
<span class="comment">// Because we used both args in the group it&#39;s an error
</span><span class="macro">assert!</span>(result.is_err());
<span class="kw">let </span>err = result.unwrap_err();
<span class="macro">assert_eq!</span>(err.kind, ErrorKind::ArgumentConflict);</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.required" class="method has-srclink"><a class="srclink rightside" href="../src/clap/args/group.rs.html#273-276">source</a><h4 class="code-header">pub fn <a href="#method.required" class="fnname">required</a>(self, r: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Sets the group as required or not. A required group will be displayed in the usage string
of the application in the format <code>&lt;arg|arg2|arg3&gt;</code>. A required <code>ArgGroup</code> simply states
that one argument from this group <em>must</em> be present at runtime (unless
conflicting with another argument).</p>
<p><strong>NOTE:</strong> This setting only applies to the current <a href="./struct.App.html"><code>App</code></a> / <a href="./struct.SubCommand.html"><code>SubCommand</code></a>, and not
globally.</p>
<p><strong>NOTE:</strong> By default, <a href="./struct.ArgGroup.html#method.multiple"><code>ArgGroup::multiple</code></a> is set to <code>false</code> which when combined with
<code>ArgGroup::required(true)</code> states, “One and <em>only one</em> arg must be used from this group.
Use of more than one arg is an error.” Vice setting <code>ArgGroup::multiple(true)</code> which
states, ’<em>At least</em> one arg from this group must be used. Using multiple is OK.“</p>
<h5 id="examples-5"><a href="#examples-5">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>result = App::new(<span class="string">&quot;myprog&quot;</span>)
.arg(Arg::with_name(<span class="string">&quot;flag&quot;</span>)
.short(<span class="string">&quot;f&quot;</span>))
.arg(Arg::with_name(<span class="string">&quot;color&quot;</span>)
.short(<span class="string">&quot;c&quot;</span>))
.group(ArgGroup::with_name(<span class="string">&quot;req_flags&quot;</span>)
.args(<span class="kw-2">&amp;</span>[<span class="string">&quot;flag&quot;</span>, <span class="string">&quot;color&quot;</span>])
.required(<span class="bool-val">true</span>))
.get_matches_from_safe(<span class="macro">vec!</span>[<span class="string">&quot;myprog&quot;</span>]);
<span class="comment">// Because we didn&#39;t use any of the args in the group, it&#39;s an error
</span><span class="macro">assert!</span>(result.is_err());
<span class="kw">let </span>err = result.unwrap_err();
<span class="macro">assert_eq!</span>(err.kind, ErrorKind::MissingRequiredArgument);</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.requires" class="method has-srclink"><a class="srclink rightside" href="../src/clap/args/group.rs.html#308-315">source</a><h4 class="code-header">pub fn <a href="#method.requires" class="fnname">requires</a>(self, n: &amp;'a <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Sets the requirement rules of this group. This is not to be confused with a
<a href="./struct.ArgGroup.html#method.required">required group</a>. Requirement rules function just like <a href="./struct.Arg.html#method.requires">argument requirement rules</a>, you
can name other arguments or groups that must be present when any 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>
<h5 id="examples-6"><a href="#examples-6">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>result = App::new(<span class="string">&quot;myprog&quot;</span>)
.arg(Arg::with_name(<span class="string">&quot;flag&quot;</span>)
.short(<span class="string">&quot;f&quot;</span>))
.arg(Arg::with_name(<span class="string">&quot;color&quot;</span>)
.short(<span class="string">&quot;c&quot;</span>))
.arg(Arg::with_name(<span class="string">&quot;debug&quot;</span>)
.short(<span class="string">&quot;d&quot;</span>))
.group(ArgGroup::with_name(<span class="string">&quot;req_flags&quot;</span>)
.args(<span class="kw-2">&amp;</span>[<span class="string">&quot;flag&quot;</span>, <span class="string">&quot;color&quot;</span>])
.requires(<span class="string">&quot;debug&quot;</span>))
.get_matches_from_safe(<span class="macro">vec!</span>[<span class="string">&quot;myprog&quot;</span>, <span class="string">&quot;-c&quot;</span>]);
<span class="comment">// because we used an arg from the group, and the group requires &quot;-d&quot; to be used, it&#39;s an
// error
</span><span class="macro">assert!</span>(result.is_err());
<span class="kw">let </span>err = result.unwrap_err();
<span class="macro">assert_eq!</span>(err.kind, ErrorKind::MissingRequiredArgument);</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.requires_all" class="method has-srclink"><a class="srclink rightside" href="../src/clap/args/group.rs.html#349-354">source</a><h4 class="code-header">pub fn <a href="#method.requires_all" class="fnname">requires_all</a>(self, ns: &amp;[&amp;'a <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>]) -&gt; Self</h4></section></summary><div class="docblock"><p>Sets the requirement rules of this group. This is not to be confused with a
<a href="./struct.ArgGroup.html#method.required">required group</a>. Requirement rules function just like <a href="./struct.Arg.html#method.requires_all">argument requirement rules</a>, 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>
<h5 id="examples-7"><a href="#examples-7">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>result = App::new(<span class="string">&quot;myprog&quot;</span>)
.arg(Arg::with_name(<span class="string">&quot;flag&quot;</span>)
.short(<span class="string">&quot;f&quot;</span>))
.arg(Arg::with_name(<span class="string">&quot;color&quot;</span>)
.short(<span class="string">&quot;c&quot;</span>))
.arg(Arg::with_name(<span class="string">&quot;debug&quot;</span>)
.short(<span class="string">&quot;d&quot;</span>))
.arg(Arg::with_name(<span class="string">&quot;verb&quot;</span>)
.short(<span class="string">&quot;v&quot;</span>))
.group(ArgGroup::with_name(<span class="string">&quot;req_flags&quot;</span>)
.args(<span class="kw-2">&amp;</span>[<span class="string">&quot;flag&quot;</span>, <span class="string">&quot;color&quot;</span>])
.requires_all(<span class="kw-2">&amp;</span>[<span class="string">&quot;debug&quot;</span>, <span class="string">&quot;verb&quot;</span>]))
.get_matches_from_safe(<span class="macro">vec!</span>[<span class="string">&quot;myprog&quot;</span>, <span class="string">&quot;-c&quot;</span>, <span class="string">&quot;-d&quot;</span>]);
<span class="comment">// because we used an arg from the group, and the group requires &quot;-d&quot; and &quot;-v&quot; to be used,
// yet we only used &quot;-d&quot; it&#39;s an error
</span><span class="macro">assert!</span>(result.is_err());
<span class="kw">let </span>err = result.unwrap_err();
<span class="macro">assert_eq!</span>(err.kind, ErrorKind::MissingRequiredArgument);</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.conflicts_with" class="method has-srclink"><a class="srclink rightside" href="../src/clap/args/group.rs.html#383-390">source</a><h4 class="code-header">pub fn <a href="#method.conflicts_with" class="fnname">conflicts_with</a>(self, n: &amp;'a <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Sets the exclusion rules of this group. Exclusion (aka conflict) rules function just like
<a href="./struct.Arg.html#method.conflicts_with">argument exclusion rules</a>, you can name other arguments or groups that must <em>not</em> 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>
<h5 id="examples-8"><a href="#examples-8">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>result = App::new(<span class="string">&quot;myprog&quot;</span>)
.arg(Arg::with_name(<span class="string">&quot;flag&quot;</span>)
.short(<span class="string">&quot;f&quot;</span>))
.arg(Arg::with_name(<span class="string">&quot;color&quot;</span>)
.short(<span class="string">&quot;c&quot;</span>))
.arg(Arg::with_name(<span class="string">&quot;debug&quot;</span>)
.short(<span class="string">&quot;d&quot;</span>))
.group(ArgGroup::with_name(<span class="string">&quot;req_flags&quot;</span>)
.args(<span class="kw-2">&amp;</span>[<span class="string">&quot;flag&quot;</span>, <span class="string">&quot;color&quot;</span>])
.conflicts_with(<span class="string">&quot;debug&quot;</span>))
.get_matches_from_safe(<span class="macro">vec!</span>[<span class="string">&quot;myprog&quot;</span>, <span class="string">&quot;-c&quot;</span>, <span class="string">&quot;-d&quot;</span>]);
<span class="comment">// because we used an arg from the group, and the group conflicts with &quot;-d&quot;, it&#39;s an error
</span><span class="macro">assert!</span>(result.is_err());
<span class="kw">let </span>err = result.unwrap_err();
<span class="macro">assert_eq!</span>(err.kind, ErrorKind::ArgumentConflict);</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.conflicts_with_all" class="method has-srclink"><a class="srclink rightside" href="../src/clap/args/group.rs.html#422-427">source</a><h4 class="code-header">pub fn <a href="#method.conflicts_with_all" class="fnname">conflicts_with_all</a>(self, ns: &amp;[&amp;'a <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>]) -&gt; Self</h4></section></summary><div class="docblock"><p>Sets the exclusion rules of this group. Exclusion rules function just like
<a href="./struct.Arg.html#method.conflicts_with_all">argument exclusion rules</a>, you can name other arguments or groups that must <em>not</em> 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>
<h5 id="examples-9"><a href="#examples-9">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>result = App::new(<span class="string">&quot;myprog&quot;</span>)
.arg(Arg::with_name(<span class="string">&quot;flag&quot;</span>)
.short(<span class="string">&quot;f&quot;</span>))
.arg(Arg::with_name(<span class="string">&quot;color&quot;</span>)
.short(<span class="string">&quot;c&quot;</span>))
.arg(Arg::with_name(<span class="string">&quot;debug&quot;</span>)
.short(<span class="string">&quot;d&quot;</span>))
.arg(Arg::with_name(<span class="string">&quot;verb&quot;</span>)
.short(<span class="string">&quot;v&quot;</span>))
.group(ArgGroup::with_name(<span class="string">&quot;req_flags&quot;</span>)
.args(<span class="kw-2">&amp;</span>[<span class="string">&quot;flag&quot;</span>, <span class="string">&quot;color&quot;</span>])
.conflicts_with_all(<span class="kw-2">&amp;</span>[<span class="string">&quot;debug&quot;</span>, <span class="string">&quot;verb&quot;</span>]))
.get_matches_from_safe(<span class="macro">vec!</span>[<span class="string">&quot;myprog&quot;</span>, <span class="string">&quot;-c&quot;</span>, <span class="string">&quot;-v&quot;</span>]);
<span class="comment">// because we used an arg from the group, and the group conflicts with either &quot;-v&quot; or &quot;-d&quot;
// it&#39;s an error
</span><span class="macro">assert!</span>(result.is_err());
<span class="kw">let </span>err = result.unwrap_err();
<span class="macro">assert_eq!</span>(err.kind, ErrorKind::ArgumentConflict);</code></pre></div>
</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-ArgGroup%3C%27a%3E" class="impl has-srclink"><a class="srclink rightside" href="../src/clap/args/group.rs.html#626-637">source</a><a href="#impl-Clone-for-ArgGroup%3C%27a%3E" class="anchor"></a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.ArgGroup.html" title="struct clap::ArgGroup">ArgGroup</a>&lt;'a&gt;</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/clap/args/group.rs.html#627-636">source</a><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fnname">clone</a>(&amp;self) -&gt; Self</h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">const fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fnname">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-ArgGroup%3C%27a%3E" class="impl has-srclink"><a class="srclink rightside" href="../src/clap/args/group.rs.html#430-444">source</a><a href="#impl-Debug-for-ArgGroup%3C%27a%3E" class="anchor"></a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.ArgGroup.html" title="struct clap::ArgGroup">ArgGroup</a>&lt;'a&gt;</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/clap/args/group.rs.html#431-443">source</a><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Default-for-ArgGroup%3C%27a%3E" class="impl has-srclink"><a class="srclink rightside" href="../src/clap/args/group.rs.html#80">source</a><a href="#impl-Default-for-ArgGroup%3C%27a%3E" class="anchor"></a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.ArgGroup.html" title="struct clap::ArgGroup">ArgGroup</a>&lt;'a&gt;</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.default" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/clap/args/group.rs.html#80">source</a><a href="#method.default" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fnname">default</a>() -&gt; <a class="struct" href="struct.ArgGroup.html" title="struct clap::ArgGroup">ArgGroup</a>&lt;'a&gt;</h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-From%3C%26%27z%20ArgGroup%3C%27a%3E%3E-for-ArgGroup%3C%27a%3E" class="impl has-srclink"><a class="srclink rightside" href="../src/clap/args/group.rs.html#446-457">source</a><a href="#impl-From%3C%26%27z%20ArgGroup%3C%27a%3E%3E-for-ArgGroup%3C%27a%3E" class="anchor"></a><h3 class="code-header">impl&lt;'a, 'z&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;&amp;'z <a class="struct" href="struct.ArgGroup.html" title="struct clap::ArgGroup">ArgGroup</a>&lt;'a&gt;&gt; for <a class="struct" href="struct.ArgGroup.html" title="struct clap::ArgGroup">ArgGroup</a>&lt;'a&gt;</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/clap/args/group.rs.html#447-456">source</a><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(g: &amp;'z <a class="struct" href="struct.ArgGroup.html" title="struct clap::ArgGroup">ArgGroup</a>&lt;'a&gt;) -&gt; Self</h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-ArgGroup%3C%27a%3E" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-ArgGroup%3C%27a%3E" class="anchor"></a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.ArgGroup.html" title="struct clap::ArgGroup">ArgGroup</a>&lt;'a&gt;</h3></section><section id="impl-Send-for-ArgGroup%3C%27a%3E" class="impl has-srclink"><a href="#impl-Send-for-ArgGroup%3C%27a%3E" class="anchor"></a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.ArgGroup.html" title="struct clap::ArgGroup">ArgGroup</a>&lt;'a&gt;</h3></section><section id="impl-Sync-for-ArgGroup%3C%27a%3E" class="impl has-srclink"><a href="#impl-Sync-for-ArgGroup%3C%27a%3E" class="anchor"></a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.ArgGroup.html" title="struct clap::ArgGroup">ArgGroup</a>&lt;'a&gt;</h3></section><section id="impl-Unpin-for-ArgGroup%3C%27a%3E" class="impl has-srclink"><a href="#impl-Unpin-for-ArgGroup%3C%27a%3E" class="anchor"></a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.ArgGroup.html" title="struct clap::ArgGroup">ArgGroup</a>&lt;'a&gt;</h3></section><section id="impl-UnwindSafe-for-ArgGroup%3C%27a%3E" class="impl has-srclink"><a href="#impl-UnwindSafe-for-ArgGroup%3C%27a%3E" class="anchor"></a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.ArgGroup.html" title="struct clap::ArgGroup">ArgGroup</a>&lt;'a&gt;</h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-ArgGroup%3C%27a%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-ArgGroup%3C%27a%3E" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-ArgGroup%3C%27a%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-ArgGroup%3C%27a%3E" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-ArgGroup%3C%27a%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-ArgGroup%3C%27a%3E" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-ArgGroup%3C%27a%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-ArgGroup%3C%27a%3E" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from-1" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-ArgGroup%3C%27a%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-ArgGroup%3C%27a%3E" class="anchor"></a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
<p>That is, this conversion is whatever the implementation of
<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-ArgGroup%3C%27a%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#83">source</a><a href="#impl-ToOwned-for-ArgGroup%3C%27a%3E" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fnname">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fnname">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-ArgGroup%3C%27a%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-ArgGroup%3C%27a%3E" class="anchor"></a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-ArgGroup%3C%27a%3E" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-ArgGroup%3C%27a%3E" class="anchor"></a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../" data-current-crate="clap" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.66.0-nightly (5c8bff74b 2022-10-21)" ></div></body></html>