<!DOCTYPE html><htmllang="en"><head><metacharset="utf-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><metaname="generator"content="rustdoc"><metaname="description"content="A state in an NFA."><title>State in regex_automata::nfa::thompson - Rust</title><linkrel="preload"as="font"type="font/woff2"crossoriginhref="../../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><linkrel="preload"as="font"type="font/woff2"crossoriginhref="../../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><linkrel="preload"as="font"type="font/woff2"crossoriginhref="../../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><linkrel="preload"as="font"type="font/woff2"crossoriginhref="../../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><linkrel="preload"as="font"type="font/woff2"crossoriginhref="../../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><linkrel="stylesheet"href="../../../static.files/normalize-76eba96aa4d2e634.css"><linkrel="stylesheet"href="../../../static.files/rustdoc-5bc39a1768837dd0.css"><metaname="rustdoc-vars"data-root-path="../../../"data-static-root-path="../../../static.files/"data-current-crate="regex_automata"data-themes=""data-resource-suffix=""data-rustdoc-version="1.77.2 (25ef9e3d8 2024-04-09)"data-channel="1.77.2"data-search-js="search-dd67cee4cfa65049.js"data-settings-js="settings-4313503d2e1961c2.js"><scriptsrc="../../../static.files/storage-4c98445ec4002617.js"></script><scriptdefersrc="sidebar-items.js"></script><scriptdefersrc="../../../static.files/main-48f368f3872407c8.js"></script><noscript><linkrel="stylesheet"href="../../../static.files/noscript-04d5337699b92874.css"></noscript><linkrel="alternate icon"type="image/png"href="../../../static.files/favicon-16x16-8b506e7a72182f1c.png"><linkrel="alternate icon"type="image/png"href="../../../static.files/favicon-32x32-422f7d1d52889060.png"><linkrel="icon"type="image/svg+xml"href="../../../static.files/favicon-2c020d218678b618.svg"></head><bodyclass="rustdoc enum"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><navclass="mobile-topbar"><buttonclass="sidebar-menu-toggle"title="show sidebar"></button></nav><navclass="sidebar"><divclass="sidebar-crate"><h2><ahref="../../../regex_automata/index.html">regex_automata</a><spanclass="version">0.4.6</span></h2></div><h2class="location"><ahref="#">State</a></h2><divclass="sidebar-elems"><section><h3><ahref="#variants">Variants</a></h3><ulclass="block variant"><li><ahref="#variant.BinaryUnion">BinaryUnion</a></li><li><ahref="#variant.ByteRange">ByteRange</a></li><li><ahref="#variant.Capture">Capture</a></li><li><ahref="#variant.Dense">Dense</a></li><li><ahref="#variant.Fail">Fail</a></li><li><ahref="#variant.Look">Look</a></li><li><ahref="#variant.Match">Match</a></li><li><ahref="#variant.Sparse">Sparse</a></li><li><ahref="#variant.Union">Union</a></li></ul><h3><ahref="#implementations">Methods</a></h3><ulclass="block method"><li><ahref="#method.is_epsilon">is_epsilon</a></li></ul><h3><ahref="#trait-implementations">Trait Implementations</a></h3><ulclass="block trait-implementation"><li><ahref="#impl-Clone-for-State">Clone</a></li><li><ahref="#impl-Debug-for-State">Debug</a></li><li><ahref="#impl-Eq-for-State">Eq</a></li><li><ahref="#impl-PartialEq-for-State">PartialEq</a></li><li><ahref="#impl-StructuralPartialEq-for-State">StructuralPartialEq</a></li></ul><h3><ahref="#synthetic-implementations">Auto Trait Implementations</a></h3><ulclass="block synthetic-implementation"><li><ahref="#impl-RefUnwindSafe-for-State">RefUnwindSafe</a></li><li><ahref="#impl-Send-for-State">Send</a></li><li><ahref="#impl-Sync-for-State">Sync</a></li><li><ahref="#impl-Unpin-for-State">Unpin</a></li><li><ahref="#impl-UnwindSafe-for-State">UnwindSafe</a></li></ul><h3><ahref="#blanket-implementations">Blanket Implementations</a></h3><ulclass="block blanket-implementation"><li><a
<main><divclass="width-limiter"><navclass="sub"><formclass="search-form"><span></span><divid="sidebar-button"tabindex="-1"><ahref="../../../regex_automata/all.html"title="show sidebar"></a></div><inputclass="search-input"name="search"aria-label="Run search in the documentation"autocomplete="off"spellcheck="false"placeholder="Click or press ‘S’ to search, ‘?’ for more options…"type="search"><divid="help-button"tabindex="-1"><ahref="../../../help.html"title="help">?</a></div><divid="settings-menu"tabindex="-1"><ahref="../../../settings.html"title="settings"><imgwidth="22"height="22"alt="Change settings"src="../../../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><sectionid="main-content"class="content"><divclass="main-heading"><h1>Enum <ahref="../../index.html">regex_automata</a>::<wbr><ahref="../index.html">nfa</a>::<wbr><ahref="index.html">thompson</a>::<wbr><aclass="enum"href="#">State</a><buttonid="copy-path"title="Copy item path to clipboard"><imgsrc="../../../static.files/clipboard-7571035ce49a181d.svg"width="19"height="18"alt="Copy item path"></button></h1><spanclass="out-of-band"><aclass="src"href="../../../src/regex_automata/nfa/thompson/nfa.rs.html#1512-1619">source</a> · <buttonid="toggle-all-docs"title="collapse all docs">[<span>−</span>]</button></span></div><preclass="rust item-decl"><code>pub enum State {
}</code></pre><detailsclass="toggle top-doc"open><summaryclass="hideme"><span>Expand description</span></summary><divclass="docblock"><p>A state in an NFA.</p>
<p>In theory, it can help to conceptualize an <code>NFA</code> as a graph consisting of
<code>State</code>s. Each <code>State</code> contains its complete set of outgoing transitions.</p>
<p>In practice, it can help to conceptualize an <code>NFA</code> as a sequence of
instructions for a virtual machine. Each <code>State</code> says what to do and where
to go next.</p>
<p>Strictly speaking, the practical interpretation is the most correct one,
because of the <ahref="enum.State.html#variant.Capture"title="variant regex_automata::nfa::thompson::State::Capture"><code>Capture</code></a> state. Namely, a <code>Capture</code>
state always forwards execution to another state unconditionally. Its only
purpose is to cause a side effect: the recording of the current input
position at a particular location in memory. In this sense, an <code>NFA</code>
has more power than a theoretical non-deterministic finite automaton.</p>
<p>For most uses of this crate, it is likely that one may never even need to
be aware of this type at all. The main use cases for looking at <code>State</code>s
directly are if you need to write your own search implementation or if you
need to do some kind of analysis on the NFA.</p>
</div></details><h2id="variants"class="variants section-header">Variants<ahref="#variants"class="anchor">§</a></h2><divclass="variants"><sectionid="variant.ByteRange"class="variant"><ahref="#variant.ByteRange"class="anchor">§</a><h3class="code-header">ByteRange</h3></section><divclass="sub-variant"id="variant.ByteRange.fields"><h4>Fields</h4><divclass="sub-variant-field"><spanid="variant.ByteRange.field.trans"class="section-header"><ahref="#variant.ByteRange.field.trans"class="anchor field">§</a><code>trans: <aclass="struct"href="struct.Transition.html"title="struct regex_automata::nfa::thompson::Transition">Transition</a></code></span><divclass="docblock"><p>The transition from this state to the next.</p>
</div></div></div><divclass="docblock"><p>A state with a single transition that can only be taken if the current
input symbol is in a particular range of bytes.</p>
</div><sectionid="variant.Sparse"class="variant"><ahref="#variant.Sparse"class="anchor">§</a><h3class="code-header">Sparse(<aclass="struct"href="struct.SparseTransitions.html"title="struct regex_automata::nfa::thompson::SparseTransitions">SparseTransitions</a>)</h3></section><divclass="docblock"><p>A state with possibly many transitions represented in a sparse fashion.
Transitions are non-overlapping and ordered lexicographically by input
range.</p>
<p>In practice, this is used for encoding UTF-8 automata. Its presence is
primarily an optimization that avoids many additional unconditional
epsilon transitions (via <ahref="enum.State.html#variant.Union"title="variant regex_automata::nfa::thompson::State::Union"><code>Union</code></a> states), and thus
decreases the overhead of traversing the NFA. This can improve both
matching time and DFA construction time.</p>
</div><sectionid="variant.Dense"class="variant"><ahref="#variant.Dense"class="anchor">§</a><h3class="code-header">Dense(<aclass="struct"href="struct.DenseTransitions.html"title="struct regex_automata::nfa::thompson::DenseTransitions">DenseTransitions</a>)</h3></section><divclass="docblock"><p>A dense representation of a state with multiple transitions.</p>
</div><sectionid="variant.Look"class="variant"><ahref="#variant.Look"class="anchor">§</a><h3class="code-header">Look</h3></section><divclass="sub-variant"id="variant.Look.fields"><h4>Fields</h4><divclass="sub-variant-field"><spanid="variant.Look.field.look"class="section-header"><ahref="#variant.Look.field.look"class="anchor field">§</a><code>look: <aclass="enum"href="../../util/look/enum.Look.html"title="enum regex_automata::util::look::Look">Look</a></code></span><divclass="docblock"><p>The look-around assertion that must be satisfied before moving
to <code>next</code>.</p>
</div></div><divclass="sub-variant-field"><spanid="variant.Look.field.next"class="section-header"><ahref="#variant.Look.field.next"class="anchor field">§</a><code>next: <aclass="struct"href="../../util/primitives/struct.StateID.html"title="struct regex_automata::util::primitives::StateID">StateID</a></code></span><divclass="docblock"><p>The state to transition to if the look-around assertion is
satisfied.</p>
</div></div></div><divclass="docblock"><p>A conditional epsilon transition satisfied via some sort of
look-around. Look-around is limited to anchor and word boundary
assertions.</p>
<p>Look-around states are meant to be evaluated while performing epsilon
closure (computing the set of states reachable from a particular state
via only epsilon transitions). If the current position in the haystack
satisfies the look-around assertion, then you’re permitted to follow
</div><sectionid="variant.Union"class="variant"><ahref="#variant.Union"class="anchor">§</a><h3class="code-header">Union</h3></section><divclass="sub-variant"id="variant.Union.fields"><h4>Fields</h4><divclass="sub-variant-field"><spanid="variant.Union.field.alternates"class="section-header"><ahref="#variant.Union.field.alternates"class="anchor field">§</a><code>alternates: <aclass="struct"href="https://doc.rust-lang.org/1.77.2/alloc/boxed/struct.Box.html"title="struct alloc::boxed::Box">Box</a><[<aclass="struct"href="../../util/primitives/struct.StateID.html"title="struct regex_automata::util::primitives::StateID">StateID</a>]></code></span><divclass="docblock"><p>An ordered sequence of unconditional epsilon transitions to other
states. Transitions earlier in the sequence are preferred over
transitions later in the sequence.</p>
</div></div></div><divclass="docblock"><p>An alternation such that there exists an epsilon transition to all
states in <code>alternates</code>, where matches found via earlier transitions
are preferred over later transitions.</p>
</div><sectionid="variant.BinaryUnion"class="variant"><ahref="#variant.BinaryUnion"class="anchor">§</a><h3class="code-header">BinaryUnion</h3></section><divclass="sub-variant"id="variant.BinaryUnion.fields"><h4>Fields</h4><divclass="sub-variant-field"><spanid="variant.BinaryUnion.field.alt1"class="section-header"><ahref="#variant.BinaryUnion.field.alt1"class="anchor field">§</a><code>alt1: <aclass="struct"href="../../util/primitives/struct.StateID.html"title="struct regex_automata::util::primitives::StateID">StateID</a></code></span><divclass="docblock"><p>An unconditional epsilon transition to another NFA state. This
is preferred over <code>alt2</code>.</p>
</div></div><divclass="sub-variant-field"><spanid="variant.BinaryUnion.field.alt2"class="section-header"><ahref="#variant.BinaryUnion.field.alt2"class="anchor field">§</a><code>alt2: <aclass="struct"href="../../util/primitives/struct.StateID.html"title="struct regex_automata::util::primitives::StateID">StateID</a></code></span><divclass="docblock"><p>An unconditional epsilon transition to another NFA state. Matches
reported via this transition should only be reported if no matches
were found by following <code>alt1</code>.</p>
</div></div></div><divclass="docblock"><p>An alternation such that there exists precisely two unconditional
epsilon transitions, where matches found via <code>alt1</code> are preferred over
matches found via <code>alt2</code>.</p>
<p>This state exists as a common special case of Union where there are
only two alternates. In this case, we don’t need any allocations to
represent the state. This saves a bit of memory and also saves an
additional memory access when traversing the NFA.</p>
</div><sectionid="variant.Capture"class="variant"><ahref="#variant.Capture"class="anchor">§</a><h3class="code-header">Capture</h3></section><divclass="sub-variant"id="variant.Capture.fields"><h4>Fields</h4><divclass="sub-variant-field"><spanid="variant.Capture.field.next"class="section-header"><ahref="#variant.Capture.field.next"class="anchor field">§</a><code>next: <aclass="struct"href="../../util/primitives/struct.StateID.html"title="struct regex_automata::util::primitives::StateID">StateID</a></code></span><divclass="docblock"><p>The state to transition to, unconditionally.</p>
</div></div><divclass="sub-variant-field"><spanid="variant.Capture.field.pattern_id"class="section-header"><ahref="#variant.Capture.field.pattern_id"class="anchor field">§</a><code>pattern_id: <aclass="struct"href="../../struct.PatternID.html"title="struct regex_automata::PatternID">PatternID</a></code></span><divclass="docblock"><p>The pattern ID that this capture belongs to.</p>
</div></div><divclass="sub-variant-field"><spanid="variant.Capture.field.group_index"class="section-header"><ahref="#variant.Capture.field.group_index"class="anchor field">§</a><code>group_index: <aclass="struct"href="../../util/primitives/struct.SmallIndex.html"title="struct regex_automata::util::primitives::SmallIndex">SmallIndex</a></code></span><divclass="docblock"><p>The capture group index that this capture belongs to. Capture group
indices are local to each pattern. For example, when capturing
groups are enabled, every pattern has a capture group at index
<code>0</code>.</p>
</div></div><divclass="sub-variant-field"><spanid="variant.Capture.field.slot"class="section-header"><ahref="#variant.Capture.field.slot"class="anchor field">§</a><code>slot: <aclass="struct"href="../../util/primitives/struct.SmallIndex.html"title="struct regex_automata::util::primitives::SmallIndex">SmallIndex</a></code></span><divclass="docblock"><p>The slot index for this capture. Every capturing group has two
slots: one for the start haystack offset and one for the end
haystack offset. Unlike capture group indices, slot indices are
global across all patterns in this NFA. That is, each slot belongs
to a single pattern, but there is only one slot at index <code>i</code>.</p>
</div></div></div><divclass="docblock"><p>An empty state that records a capture location.</p>
<p>From the perspective of finite automata, this is precisely equivalent
to an unconditional epsilon transition, but serves the purpose of
instructing NFA simulations to record additional state when the finite
state machine passes through this epsilon transition.</p>
<p><code>slot</code> in this context refers to the specific capture group slot
offset that is being recorded. Each capturing group has two slots
corresponding to the start and end of the matching portion of that
group.</p>
<p>The pattern ID and capture group index are also included in this state
in case they are useful. But mostly, all you’ll need is <code>next</code> and
<code>slot</code>.</p>
</div><sectionid="variant.Fail"class="variant"><ahref="#variant.Fail"class="anchor">§</a><h3class="code-header">Fail</h3></section><divclass="docblock"><p>A state that cannot be transitioned out of. This is useful for cases
where you want to prevent matching from occurring. For example, if your
regex parser permits empty character classes, then one could choose
a <code>Fail</code> state to represent them. (An empty character class can be
thought of as an empty set. Since nothing is in an empty set, they can
</div></div><h2id="implementations"class="section-header">Implementations<ahref="#implementations"class="anchor">§</a></h2><divid="implementations-list"><detailsclass="toggle implementors-toggle"open><summary><sectionid="impl-State"class="impl"><aclass="src rightside"href="../../../src/regex_automata/nfa/thompson/nfa.rs.html#1621-1724">source</a><ahref="#impl-State"class="anchor">§</a><h3class="code-header">impl <aclass="enum"href="enum.State.html"title="enum regex_automata::nfa::thompson::State">State</a></h3></section></summary><divclass="impl-items"><detailsclass="toggle method-toggle"open><summary><sectionid="method.is_epsilon"class="method"><aclass="src rightside"href="../../../src/regex_automata/nfa/thompson/nfa.rs.html#1655-1667">source</a><h4class="code-header">pub fn <ahref="#method.is_epsilon"class="fn">is_epsilon</a>(&self) -><aclass="primitive"href="https://doc.rust-lang.org/1.77.2/std/primitive.bool.html">bool</a></h4></section></summary><divclass="docblock"><p>Returns true if and only if this state contains one or more epsilon
</div></details></div></details></div><h2id="trait-implementations"class="section-header">Trait Implementations<ahref="#trait-implementations"class="anchor">§</a></h2><divid="trait-implementations-list"><detailsclass="toggle implementors-toggle"open><summary><sectionid="impl-Clone-for-State"class="impl"><aclass="src rightside"href="../../../src/regex_automata/nfa/thompson/nfa.rs.html#1511">source</a><ahref="#impl-Clone-for-State"class="anchor">§</a><h3class="code-header">impl <aclass="trait"href="https://doc.rust-lang.org/1.77.2/core/clone/trait.Clone.html"title="trait core::clone::Clone">Clone</a> for <aclass="enum"href="enum.State.html"title="enum regex_automata::nfa::thompson::State">State</a></h3></section></summary><divclass="impl-items"><detailsclass="toggle method-toggle"open><summary><sectionid="method.clone"class="method trait-impl"><aclass="src rightside"href="../../../src/regex_automata/nfa/thompson/nfa.rs.html#1511">source</a><ahref="#method.clone"class="anchor">§</a><h4class="code-header">fn <ahref="https://doc.rust-lang.org/1.77.2/core/clone/trait.Clone.html#tymethod.clone"class="fn">clone</a>(&self) -><aclass="enum"href="enum.State.html"title="enum regex_automata::nfa::thompson::State">State</a></h4></section></summary><divclass='docblock'>Returns a copy of the value. <ahref="https://doc.rust-lang.org/1.77.2/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.clone_from"class="method trait-impl"><spanclass="rightside"><spanclass="since"title="Stable since Rust version 1.0.0">1.0.0</span> · <aclass="src"href="https://doc.rust-lang.org/1.77.2/src/core/clone.rs.html#169">source</a></span><ahref="#method.clone_from"class="anchor">§</a><h4class="code-header">fn <ahref="https://doc.rust-lang.org/1.77.2/core/clone/trait.Clone.html#method.clone_from"class="fn">clone_from</a>(&mut self, source: <aclass="primitive"href="https://doc.rust-lang.org/1.77.2/std/primitive.reference.html">&Self</a>)</h4></section></summary><divclass='docblock'>Performs copy-assignment from <code>source</code>. <ahref="https://doc.rust-lang.org/1.77.2/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><detailsclass="toggle implementors-toggle"open><summary><sectionid="impl-Debug-for-State"class="impl"><aclass="src rightside"href="../../../src/regex_automata/nfa/thompson/nfa.rs.html#1726-1783">source</a><ahref="#impl-Debug-for-State"class="anchor">§</a><h3class="code-header">impl <aclass="trait"href="https://doc.rust-lang.org/1.77.2/core/fmt/trait.Debug.html"title="trait core::fmt::Debug">Debug</a> for <aclass="enum"href="enum.State.html"title="enum regex_automata::nfa::thompson::State">State</a></h3></section></summary><divclass="impl-items"><detailsclass="toggle method-toggle"open><summary><sectionid="method.fmt"class="method trait-impl"><aclass="src rightside"href="../../../src/regex_automata/nfa/thompson/nfa.rs.html#1727-1782">source</a><ahref="#method.fmt"class="anchor">§</a><h4class="code-header">fn <ahref="https://doc.rust-lang.org/1.77.2/core/fmt/trait.Debug.html#tymethod.fmt"class="fn">fmt</a>(&self, f: &mut <aclass="struct"href="https://doc.rust-lang.org/1.77.2/core/fmt/struct.Formatter.html"title="struct core::fmt::Formatter">Formatter</a><'_>) -><aclass="type"href="https://doc.rust-lang.org/1.77.2/core/fmt/type.Result.html"title="type core::fmt::Result">Result</a></h4></section></summary><divclass='docblock'>Formats the value using the given formatter. <ahref="https://doc.rust-lang.org/1.77.2/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><detailsclass="toggle implementors-toggle"open><summary><sectionid="impl-PartialEq-for-State"class="impl"><aclass="src rightside"href="../../../src/regex_automata/nfa/thompson/nfa.rs.html#1511">source</a><ahref="#impl-PartialEq-for-State"class="anchor">§</a><h3class="code-header">impl <acl
by <code>==</code>.</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.ne"class="method trait-impl"><spanclass="rightside"><spanclass="since"title="Stable since Rust version 1.0.0">1.0.0</span> · <aclass="src"href="https://doc.rust-lang.org/1.77.2/src/core/cmp.rs.html#242">source</a></span><ahref="#method.ne"class="anchor">§</a><h4class="code-header">fn <ahref="https://doc.rust-lang.org/1.77.2/core/cmp/trait.PartialEq.html#method.ne"class="fn">ne</a>(&self, other: <aclass="primitive"href="https://doc.rust-lang.org/1.77.2/std/primitive.reference.html">&Rhs</a>) -><aclass="primitive"href="https://doc.rust-lang.org/1.77.2/std/primitive.bool.html">bool</a></h4></section></summary><divclass='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><sectionid="impl-Eq-for-State"class="impl"><aclass="src rightside"href="../../../src/regex_automata/nfa/thompson/nfa.rs.html#1511">source</a><ahref="#impl-Eq-for-State"class="anchor">§</a><h3class="code-header">impl <aclass="trait"href="https://doc.rust-lang.org/1.77.2/core/cmp/trait.Eq.html"title="trait core::cmp::Eq">Eq</a> for <aclass="enum"href="enum.State.html"title="enum regex_automata::nfa::thompson::State">State</a></h3></section><sectionid="impl-StructuralPartialEq-for-State"class="impl"><aclass="src rightside"href="../../../src/regex_automata/nfa/thompson/nfa.rs.html#1511">source</a><ahref="#impl-StructuralPartialEq-for-State"class="anchor">§</a><h3class="code-header">impl <aclass="trait"href="https://doc.rust-lang.org/1.77.2/core/marker/trait.StructuralPartialEq.html"title="trait core::marker::StructuralPartialEq">StructuralPartialEq</a> for <aclass="enum"href="enum.State.html"title="enum regex_automata::nfa::thompson::State">State</a></h3></section></div><h2id="synthetic-implementations"class="section-header">Auto Trait Implementations<ahref="#synthetic-implementations"class="anchor">§</a></h2><divid="synthetic-implementations-list"><sectionid="impl-RefUnwindSafe-for-State"class="impl"><ahref="#impl-RefUnwindSafe-for-State"class="anchor">§</a><h3class="code-header">impl <aclass="trait"href="https://doc.rust-lang.org/1.77.2/core/panic/unwind_safe/trait.RefUnwindSafe.html"title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <aclass="enum"href="enum.State.html"title="enum regex_automata::nfa::thompson::State">State</a></h3></section><sectionid="impl-Send-for-State"class="impl"><ahref="#impl-Send-for-State"class="anchor">§</a><h3class="code-header">impl <aclass="trait"href="https://doc.rust-lang.org/1.77.2/core/marker/trait.Send.html"title="trait core::marker::Send">Send</a> for <aclass="enum"href="enum.State.html"title="enum regex_automata::nfa::thompson::State">State</a></h3></section><sectionid="impl-Sync-for-State"class="impl"><ahref="#impl-Sync-for-State"class="anchor">§</a><h3class="code-header">impl <aclass="trait"href="https://doc.rust-lang.org/1.77.2/core/marker/trait.Sync.html"title="trait core::marker::Sync">Sync</a> for <aclass="enum"href="enum.State.html"title="enum regex_automata::nfa::thompson::State">State</a></h3></section><sectionid="impl-Unpin-for-State"class="impl"><ahref="#impl-Unpin-for-State"class="anchor">§</a><h3class="code-header">impl <aclass="trait"href="https://doc.rust-lang.org/1.77.2/core/marker/trait.Unpin.html"title="trait core::marker::Unpin">Unpin</a> for <aclass="enum"href="enum.State.html"title="enum regex_automata::nfa::thompson::State">State</a></h3></section><sectionid="impl-UnwindSafe-for-State"class="impl"><ahref="#impl-UnwindSafe-for-State"class="anchor">§</a><h3class="code-header">impl <aclass="trait"href="https://doc.rust-lang.org/1.77.2/core/panic/unwind_safe/trait.UnwindSafe.html"title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <aclass="enum"href="enum.State.html"title="enum regex_automata::nfa::thompson::State">State</a></h3></section></div><h2id="blanket-implementations"class="section-header">Blanket Implementations<ahref="#blanket-implementations"class="anchor">§</a></h2><divid="blanket-implementations-list"><detailsclass="toggle implementors-toggle"><summary><sectionid="impl-Any-for-T"class="impl"><aclass="src rightside"href="https://doc.rust-lang.org/1.77.2/src/core/any.rs.html#140">source</a><ahref="#impl-Any-for-T"class="anchor">§</a><h3class="code-header">impl<T><aclass="trait"href="https://doc.rust-lang.org/1.77.2/core/any/trait.Any.html"title="trait core::any::Any">Any</a> for T<divclass="where">where
T: 'static + ?<aclass="trait"href="https://doc.rust-lang.org/1.77.2/core/marker/trait.Sized.html"title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><divclass="impl-items"><detailsclass="toggle method-toggle"open><summary><sectionid="method.type_id"class="method trait-impl"><aclass="src rightside"href="https://doc.rust-lang.org/1.77.2/src/core/any.rs.html#141">source</a><ahref="#method.type_id"class="anchor">§</a><h4class="code-header">fn <ahref="https://doc.rust-lang.org/1.77.2/core/any/trait.Any.html#tymethod.type_id"class="fn">type_id</a>(&self) -><aclass="struct"href="https://doc.rust-lang.org/1.77.2/core/any/struct.TypeId.html"title="struct core::any::TypeId">TypeId</a></h4></section></summary><divclass='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <ahref="https://doc.rust-lang.org/1.77.2/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><detailsclass="toggle implementors-toggle"><summary><sectionid="impl-Borrow%3CT%3E-for-T"class="impl"><aclass="src rightside"href="https://doc.rust-lang.org/1.77.2/src/core/borrow.rs.html#208">source</a><ahref="#impl-Borrow%3CT%3E-for-T"class="anchor">§</a><h3class="code-header">impl<T><aclass="trait"href="https://doc.rust-lang.org/1.77.2/core/borrow/trait.Borrow.html"title="trait core::borrow::Borrow">Borrow</a><T> for T<divclass="where">where
T: ?<aclass="trait"href="https://doc.rust-lang.org/1.77.2/core/marker/trait.Sized.html"title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><divclass="impl-items"><detailsclass="toggle method-toggle"open><summary><sectionid="method.borrow"class="method trait-impl"><aclass="src rightside"href="https://doc.rust-lang.org/1.77.2/src/core/borrow.rs.html#210">source</a><ahref="#method.borrow"class="anchor">§</a><h4class="code-header">fn <ahref="https://doc.rust-lang.org/1.77.2/core/borrow/trait.Borrow.html#tymethod.borrow"class="fn">borrow</a>(&self) -><aclass="primitive"href="https://doc.rust-lang.org/1.77.2/std/primitive.reference.html">&T</a></h4></section></summary><divclass='docblock'>Immutably borrows from an owned value. <ahref="https://doc.rust-lang.org/1.77.2/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><detailsclass="toggle implementors-toggle"><summary><sectionid="impl-BorrowMut%3CT%3E-for-T"class="impl"><aclass="src rightside"href="https://doc.rust-lang.org/1.77.2/src/core/borrow.rs.html#216">source</a><ahref="#impl-BorrowMut%3CT%3E-for-T"class="anchor">§</a><h3class="code-header">impl<T><aclass="trait"href="https://doc.rust-lang.org/1.77.2/core/borrow/trait.BorrowMut.html"title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<divclass="where">where
T: ?<aclass="trait"href="https://doc.rust-lang.org/1.77.2/core/marker/trait.Sized.html"title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><divclass="impl-items"><detailsclass="toggle method-toggle"open><summary><sectionid="method.borrow_mut"class="method trait-impl"><aclass="src rightside"href="https://doc.rust-lang.org/1.77.2/src/core/borrow.rs.html#217">source</a><ahref="#method.borrow_mut"class="anchor">§</a><h4class="code-header">fn <ahref="https://doc.rust-lang.org/1.77.2/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut"class="fn">borrow_mut</a>(&mut self) -><aclass="primitive"href="https://doc.rust-lang.org/1.77.2/std/primitive.reference.html">&mut T</a></h4></section></summary><divclass='docblock'>Mutably borrows from an owned value. <ahref="https://doc.rust-lang.org/1.77.2/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><detailsclass="toggle implementors-toggle"><summary><sectionid="impl-From%3CT%3E-for-T"class="impl"><aclass="src rightside"href="https://doc.rust-lang.org/1.77.2/src/core/convert/mod.rs.html#764">source</a><ahref="#impl-From%3CT%3E-for-T"class="anchor">§</a><h3class="code-header">impl<T><aclass="trait"href="https://doc.rust-lang.org/1.77.2/core/convert/trait.From.html"title="trait core::convert::From">From</a><T> for T</h3></section></summary><divclass="impl-items"><detailsclass="toggle method-toggle"open><summary><sectionid="method.from"class="method trait-impl"><aclass="src rightside"href="https://doc.rust-lang.org/1.77.2/src/core/convert/mod.rs.html#767">source</a><ahref="#method.from"class="anchor">§</a><h4class="code-header">fn <ahref="https://doc.rust-lang.org/1.77.2/core/convert/trait.From.html#tymethod.from"class="fn">from</a>(t: T) -> T</h4></section></summary><divclass="docblock"><p>Returns the argument unchanged.</p>
</div></details></div></details><detailsclass="toggle implementors-toggle"><summary><sectionid="impl-Into%3CU%3E-for-T"class="impl"><aclass="src rightside"href="https://doc.rust-lang.org/1.77.2/src/core/convert/mod.rs.html#747-749">source</a><ahref="#impl-Into%3CU%3E-for-T"class="anchor">§</a><h3class="code-header">impl<T, U><aclass="trait"href="https://doc.rust-lang.org/1.77.2/core/convert/trait.Into.html"title="trait core::convert::Into">Into</a><U> for T<divclass="where">where
<code><ahref="https://doc.rust-lang.org/1.77.2/core/convert/trait.From.html"title="trait core::convert::From">From</a><T> for U</code> chooses to do.</p>
</div></details></div></details><detailsclass="toggle implementors-toggle"><summary><sectionid="impl-ToOwned-for-T"class="impl"><aclass="src rightside"href="https://doc.rust-lang.org/1.77.2/src/alloc/borrow.rs.html#83-85">source</a><ahref="#impl-ToOwned-for-T"class="anchor">§</a><h3class="code-header">impl<T><aclass="trait"href="https://doc.rust-lang.org/1.77.2/alloc/borrow/trait.ToOwned.html"title="trait alloc::borrow::ToOwned">ToOwned</a> for T<divclass="where">where
T: <aclass="trait"href="https://doc.rust-lang.org/1.77.2/core/clone/trait.Clone.html"title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><divclass="impl-items"><detailsclass="toggle"open><summary><sectionid="associatedtype.Owned"class="associatedtype trait-impl"><ahref="#associatedtype.Owned"class="anchor">§</a><h4class="code-header">type <ahref="https://doc.rust-lang.org/1.77.2/alloc/borrow/trait.ToOwned.html#associatedtype.Owned"class="associatedtype">Owned</a> = T</h4></section></summary><divclass='docblock'>The resulting type after obtaining ownership.</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.to_owned"class="method trait-impl"><aclass="src rightside"href="https://doc.rust-lang.org/1.77.2/src/alloc/borrow.rs.html#88">source</a><ahref="#method.to_owned"class="anchor">§</a><h4class="code-header">fn <ahref="https://doc.rust-lang.org/1.77.2/alloc/borrow/trait.ToOwned.html#tymethod.to_owned"class="fn">to_owned</a>(&self) -> T</h4></section></summary><divclass='docblock'>Creates owned data from borrowed data, usually by cloning. <ahref="https://doc.rust-lang.org/1.77.2/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.clone_into"class="method trait-impl"><aclass="src rightside"href="https://doc.rust-lang.org/1.77.2/src/alloc/borrow.rs.html#92">source</a><ahref="#method.clone_into"class="anchor">§</a><h4class="code-header">fn <ahref="https://doc.rust-lang.org/1.77.2/alloc/borrow/trait.ToOwned.html#method.clone_into"class="fn">clone_into</a>(&self, target: <aclass="primitive"href="https://doc.rust-lang.org/1.77.2/std/primitive.reference.html">&mut T</a>)</h4></section></summary><divclass='docblock'>Uses borrowed data to replace owned data, usually by cloning. <ahref="https://doc.rust-lang.org/1.77.2/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><detailsclass="toggle implementors-toggle"><summary><sectionid="impl-TryFrom%3CU%3E-for-T"class="impl"><aclass="src rightside"href="https://doc.rust-lang.org/1.77.2/src/core/convert/mod.rs.html#804-806">source</a><ahref="#impl-TryFrom%3CU%3E-for-T"class="anchor">§</a><h3class="code-header">impl<T, U><aclass="trait"href="https://doc.rust-lang.org/1.77.2/core/convert/trait.TryFrom.html"title="trait core::convert::TryFrom">TryFrom</a><U> for T<divclass="where">where
U: <aclass="trait"href="https://doc.rust-lang.org/1.77.2/core/convert/trait.Into.html"title="trait core::convert::Into">Into</a><T>,</div></h3></section></summary><divclass="impl-items"><detailsclass="toggle"open><summary><sectionid="associatedtype.Error-1"class="associatedtype trait-impl"><ahref="#associatedtype.Error-1"class="anchor">§</a><h4class="code-header">type <ahref="https://doc.rust-lang.org/1.77.2/core/convert/trait.TryFrom.html#associatedtype.Error"class="associatedtype">Error</a> = <aclass="enum"href="https://doc.rust-lang.org/1.77.2/core/convert/enum.Infallible.html"title="enum core::convert::Infallible">Infallible</a></h4></section></summary><divclass='docblock'>The type returned in the event of a conversion error.</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.try_from"class="method trait-impl"><aclass="src rightside"href="https://doc.rust-lang.org/1.77.2/src/core/convert/mod.rs.html#811">source</a><ahref="#method.try_from"class="anchor">§</a><h4class="code-header">fn <ahref="https://doc.rust-lang.org/1.77.2/core/convert/trait.TryFrom.html#tymethod.try_from"class="fn">try_from</a>(value: U) -><aclass="enum"href="https://doc.rust-lang.org/1.77.2/core/result/enum.Result.html"title="enum core::result::Result">Result</a><T, <T as <aclass="trait"href="https://doc.rust-lang.org/1.77.2/core/convert/trait.TryFrom.html"title="trait core::convert::TryFrom">TryFrom</a><U>>::<aclass="associatedtype"href="https://doc.rust-lang.org/1.77.2/core/convert/trait.TryFrom.html#associatedtype.Error"title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><divclass='docblock'>Performs the conversion.</div></details></div></details><detailsclass="toggle implementors-toggle"><summary><sectionid="impl-TryInto%3CU%3E-for-T"class="impl"><aclass="src rightside"href="https://doc.rust-lang.org/1.77.2/src/core/convert/mod.rs.html#789-791">source</a><ahref="#impl-TryInto%3CU%3E-for-T"class="anchor">§</a><h3class="code-header">impl<T, U><aclass="trait"href="https://doc.rust-lang.org/1.77.2/core/convert/trait.TryInto.html"title="trait core::convert::TryInto">TryInto</a><U> for T<divclass="where">where
U: <aclass="trait"href="https://doc.rust-lang.org/1.77.2/core/convert/trait.TryFrom.html"title="trait core::convert::TryFrom">TryFrom</a><T>,</div></h3></section></summary><divclass="impl-items"><detailsclass="toggle"open><summary><sectionid="associatedtype.Error"class="associatedtype trait-impl"><ahref="#associatedtype.Error"class="anchor">§</a><h4class="code-header">type <ahref="https://doc.rust-lang.org/1.77.2/core/convert/trait.TryInto.html#associatedtype.Error"class="associatedtype">Error</a> = <U as <aclass="trait"href="https://doc.rust-lang.org/1.77.2/core/convert/trait.TryFrom.html"title="trait core::convert::TryFrom">TryFrom</a><T>>::<aclass="associatedtype"href="https://doc.rust-lang.org/1.77.2/core/convert/trait.TryFrom.html#associatedtype.Error"title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><divclass='docblock'>The type returned in the event of a conversion error.</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.try_into"class="method trait-impl"><aclass="src rightside"href="https://doc.rust-lang.org/1.77.2/src/core/convert/mod.rs.html#796">source</a><ahref="#method.try_into"class="anchor">§</a><h4class="code-header">fn <ahref="https://doc.rust-lang.org/1.77.2/core/convert/trait.TryInto.html#tymethod.try_into"class="fn">try_into</a>(self) -><aclass="enum"href="https://doc.rust-lang.org/1.77.2/core/result/enum.Result.html"title="enum core::result::Result">Result</a><U, <U as <aclass="trait"href="https://doc.rust-lang.org/1.77.2/core/convert/trait.TryFrom.html"title="trait core::convert::TryFrom">TryFrom</a><T>>::<aclass="associatedtype"href="https://doc.rust-lang.org/1.77.2/core/convert/trait.TryFrom.html#associatedtype.Error"title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><divclass='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>