| <!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="Streamer describes a “streaming iterator.”"><meta name="keywords" content="rust, rustlang, rust-lang, Streamer"><title>Streamer in tantivy_fst - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" href="../normalize.css"><link rel="stylesheet" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" href="../ayu.css" disabled><link rel="stylesheet" href="../dark.css" disabled><link rel="stylesheet" href="../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../storage.js"></script><script defer src="sidebar-items.js"></script><script defer src="../main.js"></script><noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../favicon.svg"></head><body class="rustdoc trait"><!--[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">☰</button><a class="sidebar-logo" href="../tantivy_fst/index.html"><div class="logo-container"><img class="rust-logo" src="../rust-logo.svg" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../tantivy_fst/index.html"><div class="logo-container"><img class="rust-logo" src="../rust-logo.svg" alt="logo"></div></a><h2 class="location"><a href="#">Streamer</a></h2><div class="sidebar-elems"><section><h3><a href="#required-associated-types">Required Associated Types</a></h3><ul class="block"><li><a href="#associatedtype.Item">Item</a></li></ul><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.next">next</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In tantivy_fst</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../wheel.svg"></a></div></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Trait <a href="index.html">tantivy_fst</a>::<wbr><a class="trait" href="#">Streamer</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../clipboard.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../src/tantivy_fst/stream.rs.html#97-107">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="item-decl"><pre class="rust trait"><code>pub trait Streamer<'a> { |
| type <a href="#associatedtype.Item" class="associatedtype">Item</a>: 'a; |
| |
| fn <a href="#tymethod.next" class="fnname">next</a>(&'a mut self) -> Option<Self::<a class="associatedtype" href="trait.Streamer.html#associatedtype.Item" title="type tantivy_fst::Streamer::Item">Item</a>>; |
| }</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Streamer describes a “streaming iterator.”</p> |
| <p>It provides a mechanism for writing code that is generic over streams |
| produced by this crate.</p> |
| <p>Note that this is strictly less useful than <code>Iterator</code> because the item |
| associated type is bound to a specific lifetime. However, this does permit |
| us to write <em>some</em> generic code over streams that produce values tied |
| to the lifetime of the stream.</p> |
| <p>Some form of stream abstraction is inherently required for this crate |
| because elements in a finite state transducer are produced <em>by iterating</em> |
| over the structure. The alternative would be to create a new allocation |
| for each element iterated over, which would be prohibitively expensive.</p> |
| <h2 id="usage--motivation"><a href="#usage--motivation">Usage & motivation</a></h2> |
| <p>Streams are hard to use because they don’t fit into Rust’s current type |
| system very well. They are so hard to use that this author loathes having a |
| publically defined trait for it. Nevertheless, they do just barely provide |
| a means for composing multiple stream abstractions with different concrete |
| types. For example, one might want to take the union of a range query |
| stream with a stream that has been filtered by a regex. These streams have |
| different concrete types. A <code>Streamer</code> trait allows us to write code that |
| is generic over these concrete types. (All of the set operations are |
| implemented this way.)</p> |
| <p>A problem with streams is that the trait is itself parameterized by a |
| lifetime. In practice, this makes them very unergonomic because specifying |
| a <code>Streamer</code> bound generally requires a higher-ranked trait bound. This is |
| necessary because the lifetime can’t actually be named in the enclosing |
| function; instead, the lifetime is local to iteration itself. Therefore, |
| one must assert that the bound is valid for <em>any particular</em> lifetime. |
| This is the essence of higher-rank trait bounds.</p> |
| <p>Because of this, you might expect to see lots of bounds that look like |
| this:</p> |
| |
| <div class="example-wrap ignore"><div class='tooltip'>ⓘ</div><pre class="rust rust-example-rendered"><code><span class="kw">fn </span>takes_stream<T, S>(s: S) |
| <span class="kw">where </span>S: <span class="kw">for</span><<span class="lifetime">'a</span>> Streamer<<span class="lifetime">'a</span>, Item=T> |
| { |
| }</code></pre></div> |
| <p>There are <em>three</em> different problems with this declaration:</p> |
| <ol> |
| <li><code>S</code> is not bound by any particular lifetime itself, and most streams |
| probably contain a reference to an underlying finite state transducer.</li> |
| <li>It is often convenient to separate the notion of “stream” with |
| “stream constructor.” This represents a similar split found in the |
| standard library for <code>Iterator</code> and <code>IntoIterator</code>, respectively.</li> |
| <li>The <code>Item=T</code> is invalid because <code>Streamer</code>’s associated type is |
| parameterized by a lifetime and there is no way to parameterize an |
| arbitrary type constructor. (In this context, <code>T</code> is the type |
| constructor, because it will invariably require a lifetime to become |
| a concrete type.)</li> |
| </ol> |
| <p>With that said, we must revise our possibly-workable bounds to a giant |
| scary monster:</p> |
| |
| <div class="example-wrap ignore"><div class='tooltip'>ⓘ</div><pre class="rust rust-example-rendered"><code><span class="kw">fn </span>takes_stream<<span class="lifetime">'f</span>, I, S>(s: I) |
| <span class="kw">where </span>I: <span class="kw">for</span><<span class="lifetime">'a</span>> IntoStreamer<<span class="lifetime">'a</span>, Into=S, Item=(<span class="kw-2">&</span><span class="lifetime">'a </span>[u8], Output)>, |
| S: <span class="lifetime">'f </span>+ <span class="kw">for</span><<span class="lifetime">'a</span>> Streamer<<span class="lifetime">'a</span>, Item=(<span class="kw-2">&</span><span class="lifetime">'a </span>[u8], Output)> |
| { |
| }</code></pre></div> |
| <p>We addressed the above points correspondingly:</p> |
| <ol> |
| <li><code>S</code> is now bound by <code>'f</code>, which corresponds to the lifetime (possibly |
| <code>'static</code>) of the underlying stream.</li> |
| <li>The <code>I</code> type parameter has been added to refer to a type that knows how |
| to build a stream. Notice that neither of the bounds for <code>I</code> or <code>S</code> |
| share a lifetime parameter. This is because the higher rank trait bound |
| specifies it works for <em>any</em> particular lifetime.</li> |
| <li><code>T</code> has been replaced with specific concrete types. Note that these |
| concrete types are duplicated. With iterators, we could use |
| <code>Item=S::Item</code> in the bound for <code>I</code>, but one cannot access an associated |
| type through a higher-ranked trait bound. Therefore, we must duplicate |
| the item type.</li> |
| </ol> |
| <p>As you can see, streams offer little flexibility, little ergonomics and a |
| lot of hard to read trait bounds. The situation is lamentable, but |
| nevertheless, without them, we would not be able to compose streams by |
| leveraging the type system.</p> |
| <p>A redeemable quality is that these <em>same exact</em> trait bounds (modulo some |
| tweaks in the <code>Item</code> associated type) appear in many places in this crate |
| without much variation. Therefore, once you grok it, it’s mostly easy to |
| pattern match it with “oh I need a stream.” My hope is that clear |
| documentation and examples make these complex bounds easier to burden.</p> |
| <p>Stretching this abstraction further with Rust’s current type system is not |
| advised.</p> |
| </div></details><h2 id="required-associated-types" class="small-section-header">Required Associated Types<a href="#required-associated-types" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle method-toggle" open><summary><section id="associatedtype.Item" class="method has-srclink"><a class="srclink rightside" href="../src/tantivy_fst/stream.rs.html#99">source</a><h4 class="code-header">type <a href="#associatedtype.Item" class="associatedtype">Item</a>: 'a</h4></section></summary><div class="docblock"><p>The type of the item emitted by this stream.</p> |
| </div></details></div><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.next" class="method has-srclink"><a class="srclink rightside" href="../src/tantivy_fst/stream.rs.html#106">source</a><h4 class="code-header">fn <a href="#tymethod.next" class="fnname">next</a>(&'a mut self) -> Option<Self::<a class="associatedtype" href="trait.Streamer.html#associatedtype.Item" title="type tantivy_fst::Streamer::Item">Item</a>></h4></section></summary><div class="docblock"><p>Emits the next element in this stream, or <code>None</code> to indicate the stream |
| has been exhausted.</p> |
| <p>It is not specified what a stream does after <code>None</code> is emitted. In most |
| cases, <code>None</code> should be emitted on every subsequent call.</p> |
| </div></details></div><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor"></a></h2><div id="implementors-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Streamer%3C%27a%3E-for-Chain%3C%27f%3E" class="impl has-srclink"><a class="srclink rightside" href="../src/tantivy_fst/raw/ops.rs.html#226-244">source</a><a href="#impl-Streamer%3C%27a%3E-for-Chain%3C%27f%3E" class="anchor"></a><h3 class="code-header">impl<'a, 'f> <a class="trait" href="trait.Streamer.html" title="trait tantivy_fst::Streamer">Streamer</a><'a> for tantivy_fst::raw::<a class="struct" href="raw/struct.Chain.html" title="struct tantivy_fst::raw::Chain">Chain</a><'f></h3></section></summary><div class="impl-items"><section id="associatedtype.Item-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Item-1" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Item" class="associatedtype">Item</a> = (&'a [u8], <a class="struct" href="raw/struct.Output.html" title="struct tantivy_fst::raw::Output">Output</a>)</h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Streamer%3C%27a%3E-for-Difference%3C%27f%3E" class="impl has-srclink"><a class="srclink rightside" href="../src/tantivy_fst/raw/ops.rs.html#335-364">source</a><a href="#impl-Streamer%3C%27a%3E-for-Difference%3C%27f%3E" class="anchor"></a><h3 class="code-header">impl<'a, 'f> <a class="trait" href="trait.Streamer.html" title="trait tantivy_fst::Streamer">Streamer</a><'a> for tantivy_fst::raw::<a class="struct" href="raw/struct.Difference.html" title="struct tantivy_fst::raw::Difference">Difference</a><'f></h3></section></summary><div class="impl-items"><section id="associatedtype.Item-2" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Item-2" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Item" class="associatedtype">Item</a> = (&'a [u8], &'a [<a class="struct" href="raw/struct.IndexedValue.html" title="struct tantivy_fst::raw::IndexedValue">IndexedValue</a>])</h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Streamer%3C%27a%3E-for-Intersection%3C%27f%3E" class="impl has-srclink"><a class="srclink rightside" href="../src/tantivy_fst/raw/ops.rs.html#289-318">source</a><a href="#impl-Streamer%3C%27a%3E-for-Intersection%3C%27f%3E" class="anchor"></a><h3 class="code-header">impl<'a, 'f> <a class="trait" href="trait.Streamer.html" title="trait tantivy_fst::Streamer">Streamer</a><'a> for tantivy_fst::raw::<a class="struct" href="raw/struct.Intersection.html" title="struct tantivy_fst::raw::Intersection">Intersection</a><'f></h3></section></summary><div class="impl-items"><section id="associatedtype.Item-3" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Item-3" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Item" class="associatedtype">Item</a> = (&'a [u8], &'a [<a class="struct" href="raw/struct.IndexedValue.html" title="struct tantivy_fst::raw::IndexedValue">IndexedValue</a>])</h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Streamer%3C%27a%3E-for-SymmetricDifference%3C%27f%3E" class="impl has-srclink"><a class="srclink rightside" href="../src/tantivy_fst/raw/ops.rs.html#376-407">source</a><a href="#impl-Streamer%3C%27a%3E-for-SymmetricDifference%3C%27f%3E" class="anchor"></a><h3 class="code-header">impl<'a, 'f> <a class="trait" href="trait.Streamer.html" title="trait tantivy_fst::Streamer">Streamer</a><'a> for tantivy_fst::raw::<a class="struct" href="raw/struct.SymmetricDifference.html" title="struct tantivy_fst::raw::SymmetricDifference">SymmetricDifference</a><'f></h3></section></summary><div class="impl-items"><section id="associatedtype.Item-4" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Item-4" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Item" class="associatedtype">Item</a> = (&'a [u8], &'a [<a class="struct" href="raw/struct.IndexedValue.html" title="struct tantivy_fst::raw::IndexedValue">IndexedValue</a>])</h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Streamer%3C%27a%3E-for-Union%3C%27f%3E" class="impl has-srclink"><a class="srclink rightside" href="../src/tantivy_fst/raw/ops.rs.html#255-277">source</a><a href="#impl-Streamer%3C%27a%3E-for-Union%3C%27f%3E" class="anchor"></a><h3 class="code-header">impl<'a, 'f> <a class="trait" href="trait.Streamer.html" title="trait tantivy_fst::Streamer">Streamer</a><'a> for tantivy_fst::raw::<a class="struct" href="raw/struct.Union.html" title="struct tantivy_fst::raw::Union">Union</a><'f></h3></section></summary><div class="impl-items"><section id="associatedtype.Item-5" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Item-5" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Item" class="associatedtype">Item</a> = (&'a [u8], &'a [<a class="struct" href="raw/struct.IndexedValue.html" title="struct tantivy_fst::raw::IndexedValue">IndexedValue</a>])</h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Streamer%3C%27a%3E-for-Chain%3C%27m%3E" class="impl has-srclink"><a class="srclink rightside" href="../src/tantivy_fst/map.rs.html#1037-1044">source</a><a href="#impl-Streamer%3C%27a%3E-for-Chain%3C%27m%3E" class="anchor"></a><h3 class="code-header">impl<'a, 'm> <a class="trait" href="trait.Streamer.html" title="trait tantivy_fst::Streamer">Streamer</a><'a> for tantivy_fst::map::<a class="struct" href="map/struct.Chain.html" title="struct tantivy_fst::map::Chain">Chain</a><'m></h3></section></summary><div class="impl-items"><section id="associatedtype.Item-6" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Item-6" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Item" class="associatedtype">Item</a> = (&'a [u8], <a class="struct" href="raw/struct.Output.html" title="struct tantivy_fst::raw::Output">Output</a>)</h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Streamer%3C%27a%3E-for-Difference%3C%27m%3E" class="impl has-srclink"><a class="srclink rightside" href="../src/tantivy_fst/map.rs.html#1071-1078">source</a><a href="#impl-Streamer%3C%27a%3E-for-Difference%3C%27m%3E" class="anchor"></a><h3 class="code-header">impl<'a, 'm> <a class="trait" href="trait.Streamer.html" title="trait tantivy_fst::Streamer">Streamer</a><'a> for tantivy_fst::map::<a class="struct" href="map/struct.Difference.html" title="struct tantivy_fst::map::Difference">Difference</a><'m></h3></section></summary><div class="impl-items"><section id="associatedtype.Item-7" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Item-7" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Item" class="associatedtype">Item</a> = (&'a [u8], &'a [<a class="struct" href="raw/struct.IndexedValue.html" title="struct tantivy_fst::raw::IndexedValue">IndexedValue</a>])</h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Streamer%3C%27a%3E-for-Intersection%3C%27m%3E" class="impl has-srclink"><a class="srclink rightside" href="../src/tantivy_fst/map.rs.html#1052-1059">source</a><a href="#impl-Streamer%3C%27a%3E-for-Intersection%3C%27m%3E" class="anchor"></a><h3 class="code-header">impl<'a, 'm> <a class="trait" href="trait.Streamer.html" title="trait tantivy_fst::Streamer">Streamer</a><'a> for tantivy_fst::map::<a class="struct" href="map/struct.Intersection.html" title="struct tantivy_fst::map::Intersection">Intersection</a><'m></h3></section></summary><div class="impl-items"><section id="associatedtype.Item-8" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Item-8" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Item" class="associatedtype">Item</a> = (&'a [u8], &'a [<a class="struct" href="raw/struct.IndexedValue.html" title="struct tantivy_fst::raw::IndexedValue">IndexedValue</a>])</h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Streamer%3C%27a%3E-for-Keys%3C%27m%3E" class="impl has-srclink"><a class="srclink rightside" href="../src/tantivy_fst/map.rs.html#612-619">source</a><a href="#impl-Streamer%3C%27a%3E-for-Keys%3C%27m%3E" class="anchor"></a><h3 class="code-header">impl<'a, 'm> <a class="trait" href="trait.Streamer.html" title="trait tantivy_fst::Streamer">Streamer</a><'a> for <a class="struct" href="map/struct.Keys.html" title="struct tantivy_fst::map::Keys">Keys</a><'m></h3></section></summary><div class="impl-items"><section id="associatedtype.Item-9" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Item-9" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Item" class="associatedtype">Item</a> = &'a [u8]</h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Streamer%3C%27a%3E-for-SymmetricDifference%3C%27m%3E" class="impl has-srclink"><a class="srclink rightside" href="../src/tantivy_fst/map.rs.html#1086-1093">source</a><a href="#impl-Streamer%3C%27a%3E-for-SymmetricDifference%3C%27m%3E" class="anchor"></a><h3 class="code-header">impl<'a, 'm> <a class="trait" href="trait.Streamer.html" title="trait tantivy_fst::Streamer">Streamer</a><'a> for tantivy_fst::map::<a class="struct" href="map/struct.SymmetricDifference.html" title="struct tantivy_fst::map::SymmetricDifference">SymmetricDifference</a><'m></h3></section></summary><div class="impl-items"><section id="associatedtype.Item-10" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Item-10" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Item" class="associatedtype">Item</a> = (&'a [u8], &'a [<a class="struct" href="raw/struct.IndexedValue.html" title="struct tantivy_fst::raw::IndexedValue">IndexedValue</a>])</h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Streamer%3C%27a%3E-for-Union%3C%27m%3E" class="impl has-srclink"><a class="srclink rightside" href="../src/tantivy_fst/map.rs.html#1023-1030">source</a><a href="#impl-Streamer%3C%27a%3E-for-Union%3C%27m%3E" class="anchor"></a><h3 class="code-header">impl<'a, 'm> <a class="trait" href="trait.Streamer.html" title="trait tantivy_fst::Streamer">Streamer</a><'a> for tantivy_fst::map::<a class="struct" href="map/struct.Union.html" title="struct tantivy_fst::map::Union">Union</a><'m></h3></section></summary><div class="impl-items"><section id="associatedtype.Item-11" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Item-11" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Item" class="associatedtype">Item</a> = (&'a [u8], &'a [<a class="struct" href="raw/struct.IndexedValue.html" title="struct tantivy_fst::raw::IndexedValue">IndexedValue</a>])</h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Streamer%3C%27a%3E-for-Values%3C%27m%3E" class="impl has-srclink"><a class="srclink rightside" href="../src/tantivy_fst/map.rs.html#627-634">source</a><a href="#impl-Streamer%3C%27a%3E-for-Values%3C%27m%3E" class="anchor"></a><h3 class="code-header">impl<'a, 'm> <a class="trait" href="trait.Streamer.html" title="trait tantivy_fst::Streamer">Streamer</a><'a> for <a class="struct" href="map/struct.Values.html" title="struct tantivy_fst::map::Values">Values</a><'m></h3></section></summary><div class="impl-items"><section id="associatedtype.Item-12" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Item-12" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Item" class="associatedtype">Item</a> = u64</h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Streamer%3C%27a%3E-for-StreamWithState%3C%27m%2C%20A%3E" class="impl has-srclink"><a class="srclink rightside" href="../src/tantivy_fst/map.rs.html#1121-1132">source</a><a href="#impl-Streamer%3C%27a%3E-for-StreamWithState%3C%27m%2C%20A%3E" class="anchor"></a><h3 class="code-header">impl<'a, 'm, A: 'a + <a class="trait" href="automaton/trait.Automaton.html" title="trait tantivy_fst::automaton::Automaton">Automaton</a>> <a class="trait" href="trait.Streamer.html" title="trait tantivy_fst::Streamer">Streamer</a><'a> for tantivy_fst::map::<a class="struct" href="map/struct.StreamWithState.html" title="struct tantivy_fst::map::StreamWithState">StreamWithState</a><'m, A><span class="where fmt-newline">where<br> A::<a class="associatedtype" href="automaton/trait.Automaton.html#associatedtype.State" title="type tantivy_fst::automaton::Automaton::State">State</a>: Clone,</span></h3></section></summary><div class="impl-items"><section id="associatedtype.Item-13" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Item-13" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Item" class="associatedtype">Item</a> = (&'a [u8], u64, <A as <a class="trait" href="automaton/trait.Automaton.html" title="trait tantivy_fst::automaton::Automaton">Automaton</a>>::<a class="associatedtype" href="automaton/trait.Automaton.html#associatedtype.State" title="type tantivy_fst::automaton::Automaton::State">State</a>)</h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Streamer%3C%27a%3E-for-Stream%3C%27m%2C%20A%3E" class="impl has-srclink"><a class="srclink rightside" href="../src/tantivy_fst/map.rs.html#558-564">source</a><a href="#impl-Streamer%3C%27a%3E-for-Stream%3C%27m%2C%20A%3E" class="anchor"></a><h3 class="code-header">impl<'a, 'm, A: <a class="trait" href="automaton/trait.Automaton.html" title="trait tantivy_fst::automaton::Automaton">Automaton</a>> <a class="trait" href="trait.Streamer.html" title="trait tantivy_fst::Streamer">Streamer</a><'a> for tantivy_fst::map::<a class="struct" href="map/struct.Stream.html" title="struct tantivy_fst::map::Stream">Stream</a><'m, A></h3></section></summary><div class="impl-items"><section id="associatedtype.Item-14" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Item-14" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Item" class="associatedtype">Item</a> = (&'a [u8], u64)</h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Streamer%3C%27a%3E-for-StreamWithState%3C%27f%2C%20A%3E" class="impl has-srclink"><a class="srclink rightside" href="../src/tantivy_fst/raw/mod.rs.html#1139-1148">source</a><a href="#impl-Streamer%3C%27a%3E-for-StreamWithState%3C%27f%2C%20A%3E" class="anchor"></a><h3 class="code-header">impl<'f, 'a, A: 'a + <a class="trait" href="automaton/trait.Automaton.html" title="trait tantivy_fst::automaton::Automaton">Automaton</a>> <a class="trait" href="trait.Streamer.html" title="trait tantivy_fst::Streamer">Streamer</a><'a> for tantivy_fst::raw::<a class="struct" href="raw/struct.StreamWithState.html" title="struct tantivy_fst::raw::StreamWithState">StreamWithState</a><'f, A><span class="where fmt-newline">where<br> A::<a class="associatedtype" href="automaton/trait.Automaton.html#associatedtype.State" title="type tantivy_fst::automaton::Automaton::State">State</a>: Clone,</span></h3></section></summary><div class="impl-items"><section id="associatedtype.Item-15" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Item-15" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Item" class="associatedtype">Item</a> = (&'a [u8], <a class="struct" href="raw/struct.Output.html" title="struct tantivy_fst::raw::Output">Output</a>, <A as <a class="trait" href="automaton/trait.Automaton.html" title="trait tantivy_fst::automaton::Automaton">Automaton</a>>::<a class="associatedtype" href="automaton/trait.Automaton.html#associatedtype.State" title="type tantivy_fst::automaton::Automaton::State">State</a>)</h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Streamer%3C%27a%3E-for-Stream%3C%27f%2C%20A%3E" class="impl has-srclink"><a class="srclink rightside" href="../src/tantivy_fst/raw/mod.rs.html#794-800">source</a><a href="#impl-Streamer%3C%27a%3E-for-Stream%3C%27f%2C%20A%3E" class="anchor"></a><h3 class="code-header">impl<'f, 'a, A: <a class="trait" href="automaton/trait.Automaton.html" title="trait tantivy_fst::automaton::Automaton">Automaton</a>> <a class="trait" href="trait.Streamer.html" title="trait tantivy_fst::Streamer">Streamer</a><'a> for tantivy_fst::raw::<a class="struct" href="raw/struct.Stream.html" title="struct tantivy_fst::raw::Stream">Stream</a><'f, A></h3></section></summary><div class="impl-items"><section id="associatedtype.Item-16" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Item-16" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Item" class="associatedtype">Item</a> = (&'a [u8], <a class="struct" href="raw/struct.Output.html" title="struct tantivy_fst::raw::Output">Output</a>)</h4></section></div></details></div><script src="../implementors/tantivy_fst/stream/trait.Streamer.js" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../" data-current-crate="tantivy_fst" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.66.0-nightly (5c8bff74b 2022-10-21)" ></div></body></html> |