Files
tantivy/master/fst/trait.Automaton.html
2018-03-31 04:42:51 +00:00

222 lines
30 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="API documentation for the Rust `Automaton` trait in crate `fst`.">
<meta name="keywords" content="rust, rustlang, rust-lang, Automaton">
<title>fst::Automaton - Rust</title>
<link rel="stylesheet" type="text/css" href="../normalize.css">
<link rel="stylesheet" type="text/css" href="../rustdoc.css"
id="mainThemeStyle">
<link rel="stylesheet" type="text/css" href="../dark.css">
<link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle">
<script src="../storage.js"></script>
</head>
<body class="rustdoc trait">
<!--[if lte IE 8]>
<div class="warning">
This old browser is unsupported and will most likely display funky
things.
</div>
<![endif]-->
<nav class="sidebar">
<div class="sidebar-menu">&#9776;</div>
<p class='location'>Trait Automaton</p><div class="sidebar-elems"><div class="block items"><a class="sidebar-title" href="#associated-types">Associated Types</a><div class="sidebar-links"><a href="#associatedtype.State">State</a></div><a class="sidebar-title" href="#required-methods">Required Methods</a><div class="sidebar-links"><a href="#tymethod.start">start</a><a href="#tymethod.is_match">is_match</a><a href="#tymethod.accept">accept</a></div><a class="sidebar-title" href="#provided-methods">Provided Methods</a><div class="sidebar-links"><a href="#method.can_match">can_match</a><a href="#method.will_always_match">will_always_match</a><a href="#method.starts_with">starts_with</a><a href="#method.union">union</a><a href="#method.intersection">intersection</a><a href="#method.complement">complement</a></div><a class="sidebar-title" href="#foreign-impls">Implementations on Foreign Types</a><div class="sidebar-links"><a href="#impl-Automaton">&amp;&#39;a T</a></div><a class="sidebar-title" href="#implementors">Implementors</a></div><p class='location'><a href='index.html'>fst</a></p><script>window.sidebarCurrent = {name: 'Automaton', ty: 'trait', relpath: ''};</script><script defer src="sidebar-items.js"></script></div>
</nav>
<div class="theme-picker">
<button id="theme-picker" aria-label="Pick another theme!">
<img src="../brush.svg" width="18" alt="Pick another theme!">
</button>
<div id="theme-choices"></div>
</div>
<script src="../theme.js"></script>
<nav class="sub">
<form class="search-form js-only">
<div class="search-container">
<input class="search-input" name="search"
autocomplete="off"
placeholder="Click or press S to search, ? for more options…"
type="search">
</div>
</form>
</nav>
<section id='main' class="content"><h1 class='fqn'><span class='in-band'>Trait <a href='index.html'>fst</a>::<wbr><a class="trait" href=''>Automaton</a></span><span class='out-of-band'><span id='render-detail'>
<a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">
[<span class='inner'>&#x2212;</span>]
</a>
</span><a class='srclink' href='../src/fst/automaton/mod.rs.html#24-96' title='goto source code'>[src]</a></span></h1><div class="docblock type-decl"><pre class='rust trait'>pub trait Automaton {
type <a href='#associatedtype.State' class="type">State</a>;
fn <a href='#tymethod.start' class='fnname'>start</a>(&amp;self) -&gt; Self::<a class="type" href="../fst/automaton/trait.Automaton.html#associatedtype.State" title="type fst::automaton::Automaton::State">State</a>;
<div class='item-spacer'></div> fn <a href='#tymethod.is_match' class='fnname'>is_match</a>(&amp;self, state: &amp;Self::<a class="type" href="../fst/automaton/trait.Automaton.html#associatedtype.State" title="type fst::automaton::Automaton::State">State</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>;
<div class='item-spacer'></div> fn <a href='#tymethod.accept' class='fnname'>accept</a>(&amp;self, state: &amp;Self::<a class="type" href="../fst/automaton/trait.Automaton.html#associatedtype.State" title="type fst::automaton::Automaton::State">State</a>, byte: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>) -&gt; Self::<a class="type" href="../fst/automaton/trait.Automaton.html#associatedtype.State" title="type fst::automaton::Automaton::State">State</a>;
fn <a href='#method.can_match' class='fnname'>can_match</a>(&amp;self, _state: &amp;Self::<a class="type" href="../fst/automaton/trait.Automaton.html#associatedtype.State" title="type fst::automaton::Automaton::State">State</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a> { ... }
<div class='item-spacer'></div> fn <a href='#method.will_always_match' class='fnname'>will_always_match</a>(&amp;self, _state: &amp;Self::<a class="type" href="../fst/automaton/trait.Automaton.html#associatedtype.State" title="type fst::automaton::Automaton::State">State</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a> { ... }
<div class='item-spacer'></div> fn <a href='#method.starts_with' class='fnname'>starts_with</a>(self) -&gt; <a class="struct" href="../fst/automaton/struct.StartsWith.html" title="struct fst::automaton::StartsWith">StartsWith</a>&lt;Self&gt;<br>&nbsp;&nbsp;&nbsp; <span class="where">where<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a></span>,
{ ... }
<div class='item-spacer'></div> fn <a href='#method.union' class='fnname'>union</a>&lt;Rhs:&nbsp;<a class="trait" href="../fst/automaton/trait.Automaton.html" title="trait fst::automaton::Automaton">Automaton</a>&gt;(self, rhs: Rhs) -&gt; <a class="struct" href="../fst/automaton/struct.Union.html" title="struct fst::automaton::Union">Union</a>&lt;Self, Rhs&gt;<br>&nbsp;&nbsp;&nbsp; <span class="where">where<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a></span>,
{ ... }
<div class='item-spacer'></div> fn <a href='#method.intersection' class='fnname'>intersection</a>&lt;Rhs:&nbsp;<a class="trait" href="../fst/automaton/trait.Automaton.html" title="trait fst::automaton::Automaton">Automaton</a>&gt;(self, rhs: Rhs) -&gt; <a class="struct" href="../fst/automaton/struct.Intersection.html" title="struct fst::automaton::Intersection">Intersection</a>&lt;Self, Rhs&gt;<br>&nbsp;&nbsp;&nbsp; <span class="where">where<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a></span>,
{ ... }
<div class='item-spacer'></div> fn <a href='#method.complement' class='fnname'>complement</a>(self) -&gt; <a class="struct" href="../fst/automaton/struct.Complement.html" title="struct fst::automaton::Complement">Complement</a>&lt;Self&gt;<br>&nbsp;&nbsp;&nbsp; <span class="where">where<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a></span>,
{ ... }
}</pre></div><div class='docblock'><p>Automaton describes types that behave as a finite automaton.</p>
<p>All implementors of this trait are represented by <em>byte based</em> automata.
Stated differently, all transitions in the automata correspond to a single
byte in the input.</p>
<p>This implementation choice is important for a couple reasons:</p>
<ol>
<li>The set of possible transitions in each node is small, which may make
efficient memory usage easier.</li>
<li>The finite state transducers in this crate are all byte based, so any
automata used on them must also be byte based.</li>
</ol>
<p>In practice, this does present somewhat of a problem, for example, if
you're storing UTF-8 encoded strings in a finite state transducer. Consider
using a <code>Levenshtein</code> automaton, which accepts a query string and an edit
distance. The edit distance should apply to some notion of <em>character</em>,
which could be represented by at least 1-4 bytes in a UTF-8 encoding (for
some definition of &quot;character&quot;). Therefore, the automaton must have UTF-8
decoding built into it. This can be tricky to implement, so you may find
the <a href="https://crates.io/crates/utf8-ranges"><code>utf8-ranges</code></a> crate useful.</p>
</div>
<h2 id='associated-types' class='small-section-header'>
Associated Types<a href='#associated-types' class='anchor'></a>
</h2>
<div class='methods'>
<h3 id='associatedtype.State' class='method'><span id='State.t' class='invisible'><code>type <a href='#associatedtype.State' class="type">State</a></code></span></h3><div class='docblock'><p>The type of the state used in the automaton.</p>
</div></div>
<h2 id='required-methods' class='small-section-header'>
Required Methods<a href='#required-methods' class='anchor'></a>
</h2>
<div class='methods'>
<h3 id='tymethod.start' class='method'><span id='start.v' class='invisible'><code>fn <a href='#tymethod.start' class='fnname'>start</a>(&amp;self) -&gt; Self::<a class="type" href="../fst/automaton/trait.Automaton.html#associatedtype.State" title="type fst::automaton::Automaton::State">State</a></code></span></h3><div class='docblock'><p>Returns a single start state for this automaton.</p>
<p>This method should always return the same value for each
implementation.</p>
</div><h3 id='tymethod.is_match' class='method'><span id='is_match.v' class='invisible'><code>fn <a href='#tymethod.is_match' class='fnname'>is_match</a>(&amp;self, state: &amp;Self::<a class="type" href="../fst/automaton/trait.Automaton.html#associatedtype.State" title="type fst::automaton::Automaton::State">State</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span></h3><div class='docblock'><p>Returns true if and only if <code>state</code> is a match state.</p>
</div><h3 id='tymethod.accept' class='method'><span id='accept.v' class='invisible'><code>fn <a href='#tymethod.accept' class='fnname'>accept</a>(&amp;self, state: &amp;Self::<a class="type" href="../fst/automaton/trait.Automaton.html#associatedtype.State" title="type fst::automaton::Automaton::State">State</a>, byte: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>) -&gt; Self::<a class="type" href="../fst/automaton/trait.Automaton.html#associatedtype.State" title="type fst::automaton::Automaton::State">State</a></code></span></h3><div class='docblock'><p>Return the next state given <code>state</code> and an input.</p>
</div></div>
<h2 id='provided-methods' class='small-section-header'>
Provided Methods<a href='#provided-methods' class='anchor'></a>
</h2>
<div class='methods'>
<h3 id='method.can_match' class='method'><span id='can_match.v' class='invisible'><code>fn <a href='#method.can_match' class='fnname'>can_match</a>(&amp;self, _state: &amp;Self::<a class="type" href="../fst/automaton/trait.Automaton.html#associatedtype.State" title="type fst::automaton::Automaton::State">State</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span></h3><div class='docblock'><p>Returns true if and only if <code>state</code> can lead to a match in zero or more
steps.</p>
<p>If this returns <code>false</code>, then no sequence of inputs from this state
should ever produce a match. If this does not follow, then those match
states may never be reached. In other words, behavior may be incorrect.</p>
<p>If this returns <code>true</code> even when no match is possible, then behavior
will be correct, but callers may be forced to do additional work.</p>
</div><h3 id='method.will_always_match' class='method'><span id='will_always_match.v' class='invisible'><code>fn <a href='#method.will_always_match' class='fnname'>will_always_match</a>(&amp;self, _state: &amp;Self::<a class="type" href="../fst/automaton/trait.Automaton.html#associatedtype.State" title="type fst::automaton::Automaton::State">State</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span></h3><div class='docblock'><p>Returns true if and only if <code>state</code> matches and must match no matter
what steps are taken.</p>
<p>If this returns <code>true</code>, then every sequence of inputs from this state
produces a match. If this does not follow, then those match states may
never be reached. In other words, behavior may be incorrect.</p>
<p>If this returns <code>false</code> even when every sequence of inputs will lead to
a match, then behavior will be correct, but callers may be forced to do
additional work.</p>
</div><h3 id='method.starts_with' class='method'><span id='starts_with.v' class='invisible'><code>fn <a href='#method.starts_with' class='fnname'>starts_with</a>(self) -&gt; <a class="struct" href="../fst/automaton/struct.StartsWith.html" title="struct fst::automaton::StartsWith">StartsWith</a>&lt;Self&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,&nbsp;</span></code></span></h3><div class='docblock'><p>Returns an automaton that matches the strings that start with something
this automaton matches.</p>
</div><h3 id='method.union' class='method'><span id='union.v' class='invisible'><code>fn <a href='#method.union' class='fnname'>union</a>&lt;Rhs:&nbsp;<a class="trait" href="../fst/automaton/trait.Automaton.html" title="trait fst::automaton::Automaton">Automaton</a>&gt;(self, rhs: Rhs) -&gt; <a class="struct" href="../fst/automaton/struct.Union.html" title="struct fst::automaton::Union">Union</a>&lt;Self, Rhs&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,&nbsp;</span></code></span></h3><div class='docblock'><p>Returns an automaton that matches the strings matched by either this or
the other automaton.</p>
</div><h3 id='method.intersection' class='method'><span id='intersection.v' class='invisible'><code>fn <a href='#method.intersection' class='fnname'>intersection</a>&lt;Rhs:&nbsp;<a class="trait" href="../fst/automaton/trait.Automaton.html" title="trait fst::automaton::Automaton">Automaton</a>&gt;(self, rhs: Rhs) -&gt; <a class="struct" href="../fst/automaton/struct.Intersection.html" title="struct fst::automaton::Intersection">Intersection</a>&lt;Self, Rhs&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,&nbsp;</span></code></span></h3><div class='docblock'><p>Returns an automaton that matches the strings matched by both this and
the other automaton.</p>
</div><h3 id='method.complement' class='method'><span id='complement.v' class='invisible'><code>fn <a href='#method.complement' class='fnname'>complement</a>(self) -&gt; <a class="struct" href="../fst/automaton/struct.Complement.html" title="struct fst::automaton::Complement">Complement</a>&lt;Self&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,&nbsp;</span></code></span></h3><div class='docblock'><p>Returns an automaton that matches the strings not matched by this
automaton.</p>
</div></div>
<h2 id='foreign-impls' class='small-section-header'>
Implementations on Foreign Types<a href='#foreign-impls' class='anchor'></a>
</h2>
<h3 id='impl-Automaton' class='impl'><span class='in-band'><table class='table-display'><tbody><tr><td><code>impl&lt;'a, T:&nbsp;<a class="trait" href="../fst/automaton/trait.Automaton.html" title="trait fst::automaton::Automaton">Automaton</a>&gt; <a class="trait" href="../fst/automaton/trait.Automaton.html" title="trait fst::automaton::Automaton">Automaton</a> for <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;'a </a>T</code><a href='#impl-Automaton' class='anchor'></a></span></td><td><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/fst/automaton/mod.rs.html#98-120' title='goto source code'>[src]</a></span></td></tr></tbody></table></h3><span class='docblock autohide'><div class='impl-items'><h4 id='associatedtype.State-1' class="type"><span id='State.t-1' class='invisible'><code>type <a href='#associatedtype.State' class="type">State</a> = T::<a class="type" href="../fst/automaton/trait.Automaton.html#associatedtype.State" title="type fst::automaton::Automaton::State">State</a></code></span></h4>
<h4 id='method.start' class="method"><span id='start.v-1' class='invisible'><table class='table-display'><tbody><tr><td><code>fn <a href='#method.start' class='fnname'>start</a>(&amp;self) -&gt; Self::<a class="type" href="../fst/automaton/trait.Automaton.html#associatedtype.State" title="type fst::automaton::Automaton::State">State</a></code></span></td><td><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/fst/automaton/mod.rs.html#101-103' title='goto source code'>[src]</a></td></tr></tbody></table></span></h4><h4 id='method.is_match' class="method"><span id='is_match.v-1' class='invisible'><table class='table-display'><tbody><tr><td><code>fn <a href='#method.is_match' class='fnname'>is_match</a>(&amp;self, state: &amp;Self::<a class="type" href="../fst/automaton/trait.Automaton.html#associatedtype.State" title="type fst::automaton::Automaton::State">State</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span></td><td><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/fst/automaton/mod.rs.html#105-107' title='goto source code'>[src]</a></td></tr></tbody></table></span></h4><h4 id='method.can_match-1' class="method"><span id='can_match.v-1' class='invisible'><table class='table-display'><tbody><tr><td><code>fn <a href='#method.can_match' class='fnname'>can_match</a>(&amp;self, state: &amp;Self::<a class="type" href="../fst/automaton/trait.Automaton.html#associatedtype.State" title="type fst::automaton::Automaton::State">State</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span></td><td><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/fst/automaton/mod.rs.html#109-111' title='goto source code'>[src]</a></td></tr></tbody></table></span></h4><h4 id='method.will_always_match-1' class="method"><span id='will_always_match.v-1' class='invisible'><table class='table-display'><tbody><tr><td><code>fn <a href='#method.will_always_match' class='fnname'>will_always_match</a>(&amp;self, state: &amp;Self::<a class="type" href="../fst/automaton/trait.Automaton.html#associatedtype.State" title="type fst::automaton::Automaton::State">State</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span></td><td><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/fst/automaton/mod.rs.html#113-115' title='goto source code'>[src]</a></td></tr></tbody></table></span></h4><h4 id='method.accept' class="method"><span id='accept.v-1' class='invisible'><table class='table-display'><tbody><tr><td><code>fn <a href='#method.accept' class='fnname'>accept</a>(&amp;self, state: &amp;Self::<a class="type" href="../fst/automaton/trait.Automaton.html#associatedtype.State" title="type fst::automaton::Automaton::State">State</a>, byte: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>) -&gt; Self::<a class="type" href="../fst/automaton/trait.Automaton.html#associatedtype.State" title="type fst::automaton::Automaton::State">State</a></code></span></td><td><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/fst/automaton/mod.rs.html#117-119' title='goto source code'>[src]</a></td></tr></tbody></table></span></h4><h4 id='method.starts_with-1' class="method"><span id='starts_with.v-1' class='invisible'><table class='table-display'><tbody><tr><td><code>fn <a href='../fst/automaton/trait.Automaton.html#method.starts_with' class='fnname'>starts_with</a>(self) -&gt; <a class="struct" href="../fst/automaton/struct.StartsWith.html" title="struct fst::automaton::StartsWith">StartsWith</a>&lt;Self&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,&nbsp;</span></code></span></td><td><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/fst/automaton/mod.rs.html#69-71' title='goto source code'>[src]</a></td></tr></tbody></table></span></h4><h4 id='method.union-1' class="method"><span id='union.v-1' class='invisible'><table class='table-display'><tbody><tr><td><code>fn <a href='../fst/automaton/trait.Automaton.html#method.union' class='fnname'>union</a>&lt;Rhs:&nbsp;<a class="trait" href="../fst/automaton/trait.Automaton.html" title="trait fst::automaton::Automaton">Automaton</a>&gt;(self, rhs: Rhs) -&gt; <a class="struct" href="../fst/automaton/struct.Union.html" title="struct fst::automaton::Union">Union</a>&lt;Self, Rhs&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,&nbsp;</span></code></span></td><td><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/fst/automaton/mod.rs.html#75-80' title='goto source code'>[src]</a></td></tr></tbody></table></span></h4><h4 id='method.intersection-1' class="method"><span id='intersection.v-1' class='invisible'><table class='table-display'><tbody><tr><td><code>fn <a href='../fst/automaton/trait.Automaton.html#method.intersection' class='fnname'>intersection</a>&lt;Rhs:&nbsp;<a class="trait" href="../fst/automaton/trait.Automaton.html" title="trait fst::automaton::Automaton">Automaton</a>&gt;(self, rhs: Rhs) -&gt; <a class="struct" href="../fst/automaton/struct.Intersection.html" title="struct fst::automaton::Intersection">Intersection</a>&lt;Self, Rhs&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,&nbsp;</span></code></span></td><td><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/fst/automaton/mod.rs.html#84-89' title='goto source code'>[src]</a></td></tr></tbody></table></span></h4><h4 id='method.complement-1' class="method"><span id='complement.v-1' class='invisible'><table class='table-display'><tbody><tr><td><code>fn <a href='../fst/automaton/trait.Automaton.html#method.complement' class='fnname'>complement</a>(self) -&gt; <a class="struct" href="../fst/automaton/struct.Complement.html" title="struct fst::automaton::Complement">Complement</a>&lt;Self&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,&nbsp;</span></code></span></td><td><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/fst/automaton/mod.rs.html#93-95' title='goto source code'>[src]</a></td></tr></tbody></table></span></h4></div></span>
<h2 id='implementors' class='small-section-header'>
Implementors<a href='#implementors' class='anchor'></a>
</h2>
<ul class='item-list' id='implementors-list'>
<li><table class='table-display'><tbody><tr><td><code>impl Automaton for <a class="struct" href="../fst/automaton/struct.AlwaysMatch.html" title="struct fst::automaton::AlwaysMatch">AlwaysMatch</a><span class="where fmt-newline"> type <a href='#associatedtype.State' class="type">State</a> = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>;</span></code><td><div class='out-of-band'><a class='srclink' href='../src/fst/automaton/mod.rs.html#128-136' title='goto source code'>[src]</a></div></td></tr></tbody></table></li>
<li><table class='table-display'><tbody><tr><td><code>impl&lt;A:&nbsp;<a class="trait" href="../fst/automaton/trait.Automaton.html" title="trait fst::automaton::Automaton">Automaton</a>&gt; Automaton for <a class="struct" href="../fst/automaton/struct.StartsWith.html" title="struct fst::automaton::StartsWith">StartsWith</a>&lt;A&gt;<span class="where fmt-newline"> type <a href='#associatedtype.State' class="type">State</a> = <a class="struct" href="../fst/automaton/struct.StartsWithState.html" title="struct fst::automaton::StartsWithState">StartsWithState</a>&lt;A&gt;;</span></code><td><div class='out-of-band'><a class='srclink' href='../src/fst/automaton/mod.rs.html#150-203' title='goto source code'>[src]</a></div></td></tr></tbody></table></li>
<li><table class='table-display'><tbody><tr><td><code>impl&lt;A:&nbsp;<a class="trait" href="../fst/automaton/trait.Automaton.html" title="trait fst::automaton::Automaton">Automaton</a>, B:&nbsp;<a class="trait" href="../fst/automaton/trait.Automaton.html" title="trait fst::automaton::Automaton">Automaton</a>&gt; Automaton for <a class="struct" href="../fst/automaton/struct.Union.html" title="struct fst::automaton::Union">Union</a>&lt;A, B&gt;<span class="where fmt-newline"> type <a href='#associatedtype.State' class="type">State</a> = <a class="struct" href="../fst/automaton/struct.UnionState.html" title="struct fst::automaton::UnionState">UnionState</a>&lt;A, B&gt;;</span></code><td><div class='out-of-band'><a class='srclink' href='../src/fst/automaton/mod.rs.html#211-240' title='goto source code'>[src]</a></div></td></tr></tbody></table></li>
<li><table class='table-display'><tbody><tr><td><code>impl&lt;A:&nbsp;<a class="trait" href="../fst/automaton/trait.Automaton.html" title="trait fst::automaton::Automaton">Automaton</a>, B:&nbsp;<a class="trait" href="../fst/automaton/trait.Automaton.html" title="trait fst::automaton::Automaton">Automaton</a>&gt; Automaton for <a class="struct" href="../fst/automaton/struct.Intersection.html" title="struct fst::automaton::Intersection">Intersection</a>&lt;A, B&gt;<span class="where fmt-newline"> type <a href='#associatedtype.State' class="type">State</a> = <a class="struct" href="../fst/automaton/struct.IntersectionState.html" title="struct fst::automaton::IntersectionState">IntersectionState</a>&lt;A, B&gt;;</span></code><td><div class='out-of-band'><a class='srclink' href='../src/fst/automaton/mod.rs.html#248-280' title='goto source code'>[src]</a></div></td></tr></tbody></table></li>
<li><table class='table-display'><tbody><tr><td><code>impl&lt;A:&nbsp;<a class="trait" href="../fst/automaton/trait.Automaton.html" title="trait fst::automaton::Automaton">Automaton</a>&gt; Automaton for <a class="struct" href="../fst/automaton/struct.Complement.html" title="struct fst::automaton::Complement">Complement</a>&lt;A&gt;<span class="where fmt-newline"> type <a href='#associatedtype.State' class="type">State</a> = <a class="struct" href="../fst/automaton/struct.ComplementState.html" title="struct fst::automaton::ComplementState">ComplementState</a>&lt;A&gt;;</span></code><td><div class='out-of-band'><a class='srclink' href='../src/fst/automaton/mod.rs.html#288-314' title='goto source code'>[src]</a></div></td></tr></tbody></table></li>
</ul><script type="text/javascript">window.inlined_types=new Set([]);</script><script type="text/javascript" async
src="../implementors/fst/trait.Automaton.js">
</script></section>
<section id='search' class="content hidden"></section>
<section class="footer"></section>
<aside id="help" class="hidden">
<div>
<h1 class="hidden">Help</h1>
<div class="shortcuts">
<h2>Keyboard Shortcuts</h2>
<dl>
<dt><kbd>?</kbd></dt>
<dd>Show this help dialog</dd>
<dt><kbd>S</kbd></dt>
<dd>Focus the search field</dd>
<dt><kbd></kbd></dt>
<dd>Move up in search results</dd>
<dt><kbd></kbd></dt>
<dd>Move down in search results</dd>
<dt><kbd></kbd></dt>
<dd>Switch tab</dd>
<dt><kbd>&#9166;</kbd></dt>
<dd>Go to active search result</dd>
<dt><kbd>+</kbd></dt>
<dd>Expand all sections</dd>
<dt><kbd>-</kbd></dt>
<dd>Collapse all sections</dd>
</dl>
</div>
<div class="infos">
<h2>Search Tricks</h2>
<p>
Prefix searches with a type followed by a colon (e.g.
<code>fn:</code>) to restrict the search to a given type.
</p>
<p>
Accepted types are: <code>fn</code>, <code>mod</code>,
<code>struct</code>, <code>enum</code>,
<code>trait</code>, <code>type</code>, <code>macro</code>,
and <code>const</code>.
</p>
<p>
Search functions by type signature (e.g.
<code>vec -> usize</code> or <code>* -> vec</code>)
</p>
</div>
</div>
</aside>
<script>
window.rootPath = "../";
window.currentCrate = "fst";
</script>
<script src="../main.js"></script>
<script defer src="../search-index.js"></script>
</body>
</html>