edlang/regex_syntax/hir/struct.Properties.html
2024-05-05 09:43:20 +00:00

238 lines
53 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!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="A type that collects various properties of an HIR value."><title>Properties in regex_syntax::hir - Rust</title><script> if (window.location.protocol !== "file:") document.write(`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2">`)</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-e935ef01ae1c1829.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="regex_syntax" data-themes="" data-resource-suffix="" data-rustdoc-version="1.78.0 (9b00956e5 2024-04-29)" data-channel="1.78.0" data-search-js="search-42d8da7a6b9792c2.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-4c98445ec4002617.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-12cf3b4f4f9dc36d.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-04d5337699b92874.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.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" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../regex_syntax/index.html">regex_syntax</a><span class="version">0.8.3</span></h2></div><h2 class="location"><a href="#">Properties</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.explicit_captures_len">explicit_captures_len</a></li><li><a href="#method.is_alternation_literal">is_alternation_literal</a></li><li><a href="#method.is_literal">is_literal</a></li><li><a href="#method.is_utf8">is_utf8</a></li><li><a href="#method.look_set">look_set</a></li><li><a href="#method.look_set_prefix">look_set_prefix</a></li><li><a href="#method.look_set_prefix_any">look_set_prefix_any</a></li><li><a href="#method.look_set_suffix">look_set_suffix</a></li><li><a href="#method.look_set_suffix_any">look_set_suffix_any</a></li><li><a href="#method.maximum_len">maximum_len</a></li><li><a href="#method.memory_usage">memory_usage</a></li><li><a href="#method.minimum_len">minimum_len</a></li><li><a href="#method.static_explicit_captures_len">static_explicit_captures_len</a></li><li><a href="#method.union">union</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-Properties">Clone</a></li><li><a href="#impl-Debug-for-Properties">Debug</a></li><li><a href="#impl-Eq-for-Properties">Eq</a></li><li><a href="#impl-PartialEq-for-Properties">PartialEq</a></li><li><a href="#impl-StructuralPartialEq-for-Properties">StructuralPartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-Properties">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-Properties">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Properties">Send</a></li><li><a href="#impl-Sync-for-Properties">Sync</a></li><li><a href="#impl-Unpin-for-Properties">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Properties">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In regex_syntax::hir</a></h2></div></nav><div class="sidebar-resizer"></div>
<main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../regex_syntax/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="../index.html">regex_syntax</a>::<wbr><a href="index.html">hir</a>::<wbr><a class="struct" href="#">Properties</a><button id="copy-path" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="src" href="../../src/regex_syntax/hir/mod.rs.html#1968">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct Properties(<span class="comment">/* private fields */</span>);</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A type that collects various properties of an HIR value.</p>
<p>Properties are always scalar values and represent meta data that is
computed inductively on an HIR value. Properties are defined for all
HIR values.</p>
<p>All methods on a <code>Properties</code> value take constant time and are meant to
be cheap to call.</p>
</div></details><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Properties" class="impl"><a class="src rightside" href="../../src/regex_syntax/hir/mod.rs.html#1993-2397">source</a><a href="#impl-Properties" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Properties.html" title="struct regex_syntax::hir::Properties">Properties</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.minimum_len" class="method"><a class="src rightside" href="../../src/regex_syntax/hir/mod.rs.html#2004-2006">source</a><h4 class="code-header">pub fn <a href="#method.minimum_len" class="fn">minimum_len</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.78.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.78.0/std/primitive.usize.html">usize</a>&gt;</h4></section></summary><div class="docblock"><p>Returns the length (in bytes) of the smallest string matched by this
HIR.</p>
<p>A return value of <code>0</code> is possible and occurs when the HIR can match an
empty string.</p>
<p><code>None</code> is returned when there is no minimum length. This occurs in
precisely the cases where the HIR matches nothing. i.e., The language
the regex matches is empty. An example of such a regex is <code>\P{any}</code>.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.maximum_len" class="method"><a class="src rightside" href="../../src/regex_syntax/hir/mod.rs.html#2019-2021">source</a><h4 class="code-header">pub fn <a href="#method.maximum_len" class="fn">maximum_len</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.78.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.78.0/std/primitive.usize.html">usize</a>&gt;</h4></section></summary><div class="docblock"><p>Returns the length (in bytes) of the longest string matched by this
HIR.</p>
<p>A return value of <code>0</code> is possible and occurs when nothing longer than
the empty string is in the language described by this HIR.</p>
<p><code>None</code> is returned when there is no longest matching string. This
occurs when the HIR matches nothing or when there is no upper bound on
the length of matching strings. Example of such regexes are <code>\P{any}</code>
(matches nothing) and <code>a+</code> (has no upper bound).</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.look_set" class="method"><a class="src rightside" href="../../src/regex_syntax/hir/mod.rs.html#2026-2028">source</a><h4 class="code-header">pub fn <a href="#method.look_set" class="fn">look_set</a>(&amp;self) -&gt; <a class="struct" href="struct.LookSet.html" title="struct regex_syntax::hir::LookSet">LookSet</a></h4></section></summary><div class="docblock"><p>Returns a set of all look-around assertions that appear at least once
in this HIR value.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.look_set_prefix" class="method"><a class="src rightside" href="../../src/regex_syntax/hir/mod.rs.html#2037-2039">source</a><h4 class="code-header">pub fn <a href="#method.look_set_prefix" class="fn">look_set_prefix</a>(&amp;self) -&gt; <a class="struct" href="struct.LookSet.html" title="struct regex_syntax::hir::LookSet">LookSet</a></h4></section></summary><div class="docblock"><p>Returns a set of all look-around assertions that appear as a prefix for
this HIR value. That is, the set returned corresponds to the set of
assertions that must be passed before matching any bytes in a haystack.</p>
<p>For example, <code>hir.look_set_prefix().contains(Look::Start)</code> returns true
if and only if the HIR is fully anchored at the start.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.look_set_prefix_any" class="method"><a class="src rightside" href="../../src/regex_syntax/hir/mod.rs.html#2050-2052">source</a><h4 class="code-header">pub fn <a href="#method.look_set_prefix_any" class="fn">look_set_prefix_any</a>(&amp;self) -&gt; <a class="struct" href="struct.LookSet.html" title="struct regex_syntax::hir::LookSet">LookSet</a></h4></section></summary><div class="docblock"><p>Returns a set of all look-around assertions that appear as a <em>possible</em>
prefix for this HIR value. That is, the set returned corresponds to the
set of assertions that <em>may</em> be passed before matching any bytes in a
haystack.</p>
<p>For example, <code>hir.look_set_prefix_any().contains(Look::Start)</code> returns
true if and only if its possible for the regex to match through a
anchored assertion before consuming any input.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.look_set_suffix" class="method"><a class="src rightside" href="../../src/regex_syntax/hir/mod.rs.html#2062-2064">source</a><h4 class="code-header">pub fn <a href="#method.look_set_suffix" class="fn">look_set_suffix</a>(&amp;self) -&gt; <a class="struct" href="struct.LookSet.html" title="struct regex_syntax::hir::LookSet">LookSet</a></h4></section></summary><div class="docblock"><p>Returns a set of all look-around assertions that appear as a suffix for
this HIR value. That is, the set returned corresponds to the set of
assertions that must be passed in order to be considered a match after
all other consuming HIR expressions.</p>
<p>For example, <code>hir.look_set_suffix().contains(Look::End)</code> returns true
if and only if the HIR is fully anchored at the end.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.look_set_suffix_any" class="method"><a class="src rightside" href="../../src/regex_syntax/hir/mod.rs.html#2075-2077">source</a><h4 class="code-header">pub fn <a href="#method.look_set_suffix_any" class="fn">look_set_suffix_any</a>(&amp;self) -&gt; <a class="struct" href="struct.LookSet.html" title="struct regex_syntax::hir::LookSet">LookSet</a></h4></section></summary><div class="docblock"><p>Returns a set of all look-around assertions that appear as a <em>possible</em>
suffix for this HIR value. That is, the set returned corresponds to the
set of assertions that <em>may</em> be passed before matching any bytes in a
haystack.</p>
<p>For example, <code>hir.look_set_suffix_any().contains(Look::End)</code> returns
true if and only if its possible for the regex to match through a
anchored assertion at the end of a match without consuming any input.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.is_utf8" class="method"><a class="src rightside" href="../../src/regex_syntax/hir/mod.rs.html#2144-2146">source</a><h4 class="code-header">pub fn <a href="#method.is_utf8" class="fn">is_utf8</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.78.0/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Return true if and only if the corresponding HIR will always match
valid UTF-8.</p>
<p>When this returns false, then it is possible for this HIR expression to
match invalid UTF-8, including by matching between the code units of
a single UTF-8 encoded codepoint.</p>
<p>Note that this returns true even when the corresponding HIR can match
the empty string. Since an empty string can technically appear between
UTF-8 code units, it is possible for a match to be reported that splits
a codepoint which could in turn be considered matching invalid UTF-8.
However, it is generally assumed that such empty matches are handled
specially by the search routine if it is absolutely required that
matches not split a codepoint.</p>
<h5 id="example"><a class="doc-anchor" href="#example">§</a>Example</h5>
<p>This code example shows the UTF-8 property of a variety of patterns.</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>regex_syntax::{ParserBuilder, parse};
<span class="comment">// Examples of 'is_utf8() == true'.
</span><span class="macro">assert!</span>(parse(<span class="string">r"a"</span>)<span class="question-mark">?</span>.properties().is_utf8());
<span class="macro">assert!</span>(parse(<span class="string">r"[^a]"</span>)<span class="question-mark">?</span>.properties().is_utf8());
<span class="macro">assert!</span>(parse(<span class="string">r"."</span>)<span class="question-mark">?</span>.properties().is_utf8());
<span class="macro">assert!</span>(parse(<span class="string">r"\W"</span>)<span class="question-mark">?</span>.properties().is_utf8());
<span class="macro">assert!</span>(parse(<span class="string">r"\b"</span>)<span class="question-mark">?</span>.properties().is_utf8());
<span class="macro">assert!</span>(parse(<span class="string">r"\B"</span>)<span class="question-mark">?</span>.properties().is_utf8());
<span class="macro">assert!</span>(parse(<span class="string">r"(?-u)\b"</span>)<span class="question-mark">?</span>.properties().is_utf8());
<span class="macro">assert!</span>(parse(<span class="string">r"(?-u)\B"</span>)<span class="question-mark">?</span>.properties().is_utf8());
<span class="comment">// Unicode mode is enabled by default, and in
// that mode, all \x hex escapes are treated as
// codepoints. So this actually matches the UTF-8
// encoding of U+00FF.
</span><span class="macro">assert!</span>(parse(<span class="string">r"\xFF"</span>)<span class="question-mark">?</span>.properties().is_utf8());
<span class="comment">// Now we show examples of 'is_utf8() == false'.
// The only way to do this is to force the parser
// to permit invalid UTF-8, otherwise all of these
// would fail to parse!
</span><span class="kw">let </span>parse = |pattern| {
ParserBuilder::new().utf8(<span class="bool-val">false</span>).build().parse(pattern)
};
<span class="macro">assert!</span>(!parse(<span class="string">r"(?-u)[^a]"</span>)<span class="question-mark">?</span>.properties().is_utf8());
<span class="macro">assert!</span>(!parse(<span class="string">r"(?-u)."</span>)<span class="question-mark">?</span>.properties().is_utf8());
<span class="macro">assert!</span>(!parse(<span class="string">r"(?-u)\W"</span>)<span class="question-mark">?</span>.properties().is_utf8());
<span class="comment">// Conversely to the equivalent example above,
// when Unicode mode is disabled, \x hex escapes
// are treated as their raw byte values.
</span><span class="macro">assert!</span>(!parse(<span class="string">r"(?-u)\xFF"</span>)<span class="question-mark">?</span>.properties().is_utf8());
<span class="comment">// Note that just because we disabled UTF-8 in the
// parser doesn't mean we still can't use Unicode.
// It is enabled by default, so \xFF is still
// equivalent to matching the UTF-8 encoding of
// U+00FF by default.
</span><span class="macro">assert!</span>(parse(<span class="string">r"\xFF"</span>)<span class="question-mark">?</span>.properties().is_utf8());
<span class="comment">// Even though we use raw bytes that individually
// are not valid UTF-8, when combined together, the
// overall expression *does* match valid UTF-8!
</span><span class="macro">assert!</span>(parse(<span class="string">r"(?-u)\xE2\x98\x83"</span>)<span class="question-mark">?</span>.properties().is_utf8());
</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.explicit_captures_len" class="method"><a class="src rightside" href="../../src/regex_syntax/hir/mod.rs.html#2168-2170">source</a><h4 class="code-header">pub fn <a href="#method.explicit_captures_len" class="fn">explicit_captures_len</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.78.0/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the total number of explicit capturing groups in the
corresponding HIR.</p>
<p>Note that this does not include the implicit capturing group
corresponding to the entire match that is typically included by regex
engines.</p>
<h5 id="example-1"><a class="doc-anchor" href="#example-1">§</a>Example</h5>
<p>This method will return <code>0</code> for <code>a</code> and <code>1</code> for <code>(a)</code>:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>regex_syntax::parse;
<span class="macro">assert_eq!</span>(<span class="number">0</span>, parse(<span class="string">"a"</span>)<span class="question-mark">?</span>.properties().explicit_captures_len());
<span class="macro">assert_eq!</span>(<span class="number">1</span>, parse(<span class="string">"(a)"</span>)<span class="question-mark">?</span>.properties().explicit_captures_len());
</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.static_explicit_captures_len" class="method"><a class="src rightside" href="../../src/regex_syntax/hir/mod.rs.html#2208-2210">source</a><h4 class="code-header">pub fn <a href="#method.static_explicit_captures_len" class="fn">static_explicit_captures_len</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.78.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.78.0/std/primitive.usize.html">usize</a>&gt;</h4></section></summary><div class="docblock"><p>Returns the total number of explicit capturing groups that appear in
every possible match.</p>
<p>If the number of capture groups can vary depending on the match, then
this returns <code>None</code>. That is, a value is only returned when the number
of matching groups is invariant or “static.”</p>
<p>Note that this does not include the implicit capturing group
corresponding to the entire match.</p>
<h5 id="example-2"><a class="doc-anchor" href="#example-2">§</a>Example</h5>
<p>This shows a few cases where a static number of capture groups is
available and a few cases where it is not.</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>regex_syntax::parse;
<span class="kw">let </span>len = |pattern| {
parse(pattern).map(|h| {
h.properties().static_explicit_captures_len()
})
};
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="number">0</span>), len(<span class="string">"a"</span>)<span class="question-mark">?</span>);
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="number">1</span>), len(<span class="string">"(a)"</span>)<span class="question-mark">?</span>);
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="number">1</span>), len(<span class="string">"(a)|(b)"</span>)<span class="question-mark">?</span>);
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="number">2</span>), len(<span class="string">"(a)(b)|(c)(d)"</span>)<span class="question-mark">?</span>);
<span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, len(<span class="string">"(a)|b"</span>)<span class="question-mark">?</span>);
<span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, len(<span class="string">"a|(b)"</span>)<span class="question-mark">?</span>);
<span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, len(<span class="string">"(b)*"</span>)<span class="question-mark">?</span>);
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="number">1</span>), len(<span class="string">"(b)+"</span>)<span class="question-mark">?</span>);
</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.is_literal" class="method"><a class="src rightside" href="../../src/regex_syntax/hir/mod.rs.html#2220-2222">source</a><h4 class="code-header">pub fn <a href="#method.is_literal" class="fn">is_literal</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.78.0/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Return true if and only if this HIR is a simple literal. This is
only true when this HIR expression is either itself a <code>Literal</code> or a
concatenation of only <code>Literal</code>s.</p>
<p>For example, <code>f</code> and <code>foo</code> are literals, but <code>f+</code>, <code>(foo)</code>, <code>foo()</code> and
the empty string are not (even though they contain sub-expressions that
are literals).</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.is_alternation_literal" class="method"><a class="src rightside" href="../../src/regex_syntax/hir/mod.rs.html#2233-2235">source</a><h4 class="code-header">pub fn <a href="#method.is_alternation_literal" class="fn">is_alternation_literal</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.78.0/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Return true if and only if this HIR is either a simple literal or an
alternation of simple literals. This is only
true when this HIR expression is either itself a <code>Literal</code> or a
concatenation of only <code>Literal</code>s or an alternation of only <code>Literal</code>s.</p>
<p>For example, <code>f</code>, <code>foo</code>, <code>a|b|c</code>, and <code>foo|bar|baz</code> are alternation
literals, but <code>f+</code>, <code>(foo)</code>, <code>foo()</code>, and the empty pattern are not
(even though that contain sub-expressions that are literals).</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.memory_usage" class="method"><a class="src rightside" href="../../src/regex_syntax/hir/mod.rs.html#2240-2242">source</a><h4 class="code-header">pub fn <a href="#method.memory_usage" class="fn">memory_usage</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.78.0/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the total amount of heap memory usage, in bytes, used by this
<code>Properties</code> value.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.union" class="method"><a class="src rightside" href="../../src/regex_syntax/hir/mod.rs.html#2314-2396">source</a><h4 class="code-header">pub fn <a href="#method.union" class="fn">union</a>&lt;I, P&gt;(props: I) -&gt; <a class="struct" href="struct.Properties.html" title="struct regex_syntax::hir::Properties">Properties</a><div class="where">where
I: <a class="trait" href="https://doc.rust-lang.org/1.78.0/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&lt;Item = P&gt;,
P: <a class="trait" href="https://doc.rust-lang.org/1.78.0/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;<a class="struct" href="struct.Properties.html" title="struct regex_syntax::hir::Properties">Properties</a>&gt;,</div></h4></section></summary><div class="docblock"><p>Returns a new set of properties that corresponds to the union of the
iterator of properties given.</p>
<p>This is useful when one has multiple <code>Hir</code> expressions and wants
to combine them into a single alternation without constructing the
corresponding <code>Hir</code>. This routine provides a way of combining the
properties of each <code>Hir</code> expression into one set of properties
representing the union of those expressions.</p>
<h5 id="example-union-with-hirs-that-never-match"><a class="doc-anchor" href="#example-union-with-hirs-that-never-match">§</a>Example: union with HIRs that never match</h5>
<p>This example shows that unioning properties together with one that
represents a regex that never matches will “poison” certain attributes,
like the minimum and maximum lengths.</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>regex_syntax::{hir::Properties, parse};
<span class="kw">let </span>hir1 = parse(<span class="string">"ab?c?"</span>)<span class="question-mark">?</span>;
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="number">1</span>), hir1.properties().minimum_len());
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="number">3</span>), hir1.properties().maximum_len());
<span class="kw">let </span>hir2 = parse(<span class="string">r"[a&amp;&amp;b]"</span>)<span class="question-mark">?</span>;
<span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, hir2.properties().minimum_len());
<span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, hir2.properties().maximum_len());
<span class="kw">let </span>hir3 = parse(<span class="string">r"wxy?z?"</span>)<span class="question-mark">?</span>;
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="number">2</span>), hir3.properties().minimum_len());
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="number">4</span>), hir3.properties().maximum_len());
<span class="kw">let </span>unioned = Properties::union([
hir1.properties(),
hir2.properties(),
hir3.properties(),
]);
<span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, unioned.minimum_len());
<span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, unioned.maximum_len());
</code></pre></div>
<p>The maximum length can also be “poisoned” by a pattern that has no
upper bound on the length of a match. The minimum length remains
unaffected:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>regex_syntax::{hir::Properties, parse};
<span class="kw">let </span>hir1 = parse(<span class="string">"ab?c?"</span>)<span class="question-mark">?</span>;
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="number">1</span>), hir1.properties().minimum_len());
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="number">3</span>), hir1.properties().maximum_len());
<span class="kw">let </span>hir2 = parse(<span class="string">r"a+"</span>)<span class="question-mark">?</span>;
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="number">1</span>), hir2.properties().minimum_len());
<span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, hir2.properties().maximum_len());
<span class="kw">let </span>hir3 = parse(<span class="string">r"wxy?z?"</span>)<span class="question-mark">?</span>;
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="number">2</span>), hir3.properties().minimum_len());
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="number">4</span>), hir3.properties().maximum_len());
<span class="kw">let </span>unioned = Properties::union([
hir1.properties(),
hir2.properties(),
hir3.properties(),
]);
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="number">1</span>), unioned.minimum_len());
<span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, unioned.maximum_len());
</code></pre></div>
</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-Properties" class="impl"><a class="src rightside" href="../../src/regex_syntax/hir/mod.rs.html#1967">source</a><a href="#impl-Clone-for-Properties" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.78.0/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.Properties.html" title="struct regex_syntax::hir::Properties">Properties</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../../src/regex_syntax/hir/mod.rs.html#1967">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.78.0/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.Properties.html" title="struct regex_syntax::hir::Properties">Properties</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/1.78.0/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.78.0/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.78.0/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/1.78.0/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/1.78.0/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-Properties" class="impl"><a class="src rightside" href="../../src/regex_syntax/hir/mod.rs.html#1967">source</a><a href="#impl-Debug-for-Properties" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.78.0/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.Properties.html" title="struct regex_syntax::hir::Properties">Properties</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../../src/regex_syntax/hir/mod.rs.html#1967">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.78.0/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/1.78.0/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/1.78.0/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/1.78.0/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-Properties" class="impl"><a class="src rightside" href="../../src/regex_syntax/hir/mod.rs.html#1967">source</a><a href="#impl-PartialEq-for-Properties" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.78.0/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.Properties.html" title="struct regex_syntax::hir::Properties">Properties</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../../src/regex_syntax/hir/mod.rs.html#1967">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.78.0/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.Properties.html" title="struct regex_syntax::hir::Properties">Properties</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.78.0/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.78.0/src/core/cmp.rs.html#263">source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.78.0/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/1.78.0/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.78.0/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
sufficient, and should not be overridden without very good reason.</div></details></div></details><section id="impl-Eq-for-Properties" class="impl"><a class="src rightside" href="../../src/regex_syntax/hir/mod.rs.html#1967">source</a><a href="#impl-Eq-for-Properties" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.78.0/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.Properties.html" title="struct regex_syntax::hir::Properties">Properties</a></h3></section><section id="impl-StructuralPartialEq-for-Properties" class="impl"><a class="src rightside" href="../../src/regex_syntax/hir/mod.rs.html#1967">source</a><a href="#impl-StructuralPartialEq-for-Properties" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.78.0/core/marker/trait.StructuralPartialEq.html" title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <a class="struct" href="struct.Properties.html" title="struct regex_syntax::hir::Properties">Properties</a></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-Properties" class="impl"><a href="#impl-Freeze-for-Properties" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.78.0/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.Properties.html" title="struct regex_syntax::hir::Properties">Properties</a></h3></section><section id="impl-RefUnwindSafe-for-Properties" class="impl"><a href="#impl-RefUnwindSafe-for-Properties" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.78.0/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Properties.html" title="struct regex_syntax::hir::Properties">Properties</a></h3></section><section id="impl-Send-for-Properties" class="impl"><a href="#impl-Send-for-Properties" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.78.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Properties.html" title="struct regex_syntax::hir::Properties">Properties</a></h3></section><section id="impl-Sync-for-Properties" class="impl"><a href="#impl-Sync-for-Properties" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.78.0/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Properties.html" title="struct regex_syntax::hir::Properties">Properties</a></h3></section><section id="impl-Unpin-for-Properties" class="impl"><a href="#impl-Unpin-for-Properties" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.78.0/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Properties.html" title="struct regex_syntax::hir::Properties">Properties</a></h3></section><section id="impl-UnwindSafe-for-Properties" class="impl"><a href="#impl-UnwindSafe-for-Properties" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.78.0/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Properties.html" title="struct regex_syntax::hir::Properties">Properties</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.78.0/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.78.0/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.78.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.78.0/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.78.0/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.78.0/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/1.78.0/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.78.0/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.78.0/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
T: ?<a class="trait" href="https://doc.rust-lang.org/1.78.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.78.0/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.78.0/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.78.0/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/1.78.0/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.78.0/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.78.0/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
T: ?<a class="trait" href="https://doc.rust-lang.org/1.78.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.78.0/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.78.0/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.78.0/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/1.78.0/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.78.0/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.78.0/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="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.78.0/src/core/convert/mod.rs.html#768">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.78.0/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.78.0/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.78.0/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.78.0/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.78.0/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.78.0/core/convert/trait.Into.html#tymethod.into" class="fn">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/1.78.0/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.78.0/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.78.0/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
T: <a class="trait" href="https://doc.rust-lang.org/1.78.0/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.78.0/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="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.78.0/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/1.78.0/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">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/1.78.0/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.78.0/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/1.78.0/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/1.78.0/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/1.78.0/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.78.0/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.78.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.78.0/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.78.0/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/1.78.0/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="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.78.0/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.78.0/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.78.0/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/1.78.0/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/1.78.0/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="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.78.0/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.78.0/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.78.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.78.0/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/1.78.0/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/1.78.0/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="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.78.0/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.78.0/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.78.0/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/1.78.0/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/1.78.0/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></body></html>