blob: 2413a9bd5a1708a63f9b3089ebe9ab19ab062c30 [file] [log] [blame]
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Collector for faceting"><meta name="keywords" content="rust, rustlang, rust-lang, FacetCollector"><title>FacetCollector in tantivy::collector - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" href="../../normalize.css"><link rel="stylesheet" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" href="../../ayu.css" disabled><link rel="stylesheet" href="../../dark.css" disabled><link rel="stylesheet" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../main.js"></script><noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">&#9776;</button><a class="sidebar-logo" href="../../tantivy/index.html"><div class="logo-container"><img src="http://fulmicoton.com/tantivy-logo/tantivy-logo.png" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../tantivy/index.html"><div class="logo-container">
<img src="http://fulmicoton.com/tantivy-logo/tantivy-logo.png" alt="logo"></div></a><h2 class="location"><a href="#">FacetCollector</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.add_facet">add_facet</a></li><li><a href="#method.for_field">for_field</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Collector-for-FacetCollector">Collector</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-FacetCollector">RefUnwindSafe</a></li><li><a href="#impl-Send-for-FacetCollector">Send</a></li><li><a href="#impl-Sync-for-FacetCollector">Sync</a></li><li><a href="#impl-Unpin-for-FacetCollector">Unpin</a></li><li><a href="#impl-UnwindSafe-for-FacetCollector">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-FacetCollector">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-FacetCollector">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-FacetCollector">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-Downcast-for-FacetCollector">Downcast</a></li><li><a href="#impl-DowncastSync-for-FacetCollector">DowncastSync</a></li><li><a href="#impl-From%3CT%3E-for-FacetCollector">From&lt;T&gt;</a></li><li><a href="#impl-Fruit-for-FacetCollector">Fruit</a></li><li><a href="#impl-Into%3CU%3E-for-FacetCollector">Into&lt;U&gt;</a></li><li><a href="#impl-Pointable-for-FacetCollector">Pointable</a></li><li><a href="#impl-TryFrom%3CU%3E-for-FacetCollector">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-FacetCollector">TryInto&lt;U&gt;</a></li><li><a href="#impl-VZip%3CV%3E-for-FacetCollector">VZip&lt;V&gt;</a></li></ul></section><h2><a href="index.html">In tantivy::collector</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../index.html">tantivy</a>::<wbr><a href="index.html">collector</a>::<wbr><a class="struct" href="#">FacetCollector</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/collector/facet_collector.rs.html#169-172">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">&#x2212;</span>]</a></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct FacetCollector { /* private fields */ }</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Collector for faceting</p>
<p>The collector collects all facets. You need to configure it
beforehand with the facet you want to extract.</p>
<p>This is done by calling <code>.add_facet(...)</code> with the root of the
facet you want to extract as argument.</p>
<p>Facet counts will only be computed for the facet that are direct children
of such a root facet.</p>
<p>For instance, if your index represents books, your hierarchy of facets
may contain <code>category</code>, <code>language</code>.</p>
<p>The category facet may include <code>subcategories</code>. For instance, a book
could belong to <code>/category/fiction/fantasy</code>.</p>
<p>If you request the facet counts for <code>/category</code>, the result will be
the breakdown of counts for the direct children of <code>/category</code>
(e.g. <code>/category/fiction</code>, <code>/category/biography</code>, <code>/category/personal_development</code>).</p>
<p>Once collection is finished, you can harvest its results in the form
of a <a href="struct.FacetCounts.html" title="FacetCounts"><code>FacetCounts</code></a> object, and extract your facet counts from it.</p>
<p>This implementation assumes you are working with a number of facets that
is many hundreds of times smaller than your number of documents.</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>tantivy::collector::FacetCollector;
<span class="kw">use </span>tantivy::query::AllQuery;
<span class="kw">use </span>tantivy::schema::{Facet, Schema, FacetOptions, TEXT};
<span class="kw">use </span>tantivy::{doc, Index};
<span class="kw">fn </span>example() -&gt; tantivy::Result&lt;()&gt; {
<span class="kw">let </span><span class="kw-2">mut </span>schema_builder = Schema::builder();
<span class="comment">// Facet have their own specific type.
// It is not a bad practise to put all of your
// facet information in the same field.
</span><span class="kw">let </span>facet = schema_builder.add_facet_field(<span class="string">&quot;facet&quot;</span>, FacetOptions::default());
<span class="kw">let </span>title = schema_builder.add_text_field(<span class="string">&quot;title&quot;</span>, TEXT);
<span class="kw">let </span>schema = schema_builder.build();
<span class="kw">let </span>index = Index::create_in_ram(schema);
{
<span class="kw">let </span><span class="kw-2">mut </span>index_writer = index.writer(<span class="number">3_000_000</span>)<span class="question-mark">?</span>;
<span class="comment">// a document can be associated with any number of facets
</span>index_writer.add_document(<span class="macro">doc!</span>(
title =&gt; <span class="string">&quot;The Name of the Wind&quot;</span>,
facet =&gt; Facet::from(<span class="string">&quot;/lang/en&quot;</span>),
facet =&gt; Facet::from(<span class="string">&quot;/category/fiction/fantasy&quot;</span>)
))<span class="question-mark">?</span>;
index_writer.add_document(<span class="macro">doc!</span>(
title =&gt; <span class="string">&quot;Dune&quot;</span>,
facet =&gt; Facet::from(<span class="string">&quot;/lang/en&quot;</span>),
facet =&gt; Facet::from(<span class="string">&quot;/category/fiction/sci-fi&quot;</span>)
))<span class="question-mark">?</span>;
index_writer.add_document(<span class="macro">doc!</span>(
title =&gt; <span class="string">&quot;La Vénus d&#39;Ille&quot;</span>,
facet =&gt; Facet::from(<span class="string">&quot;/lang/fr&quot;</span>),
facet =&gt; Facet::from(<span class="string">&quot;/category/fiction/fantasy&quot;</span>),
facet =&gt; Facet::from(<span class="string">&quot;/category/fiction/horror&quot;</span>)
))<span class="question-mark">?</span>;
index_writer.add_document(<span class="macro">doc!</span>(
title =&gt; <span class="string">&quot;The Diary of a Young Girl&quot;</span>,
facet =&gt; Facet::from(<span class="string">&quot;/lang/en&quot;</span>),
facet =&gt; Facet::from(<span class="string">&quot;/category/biography&quot;</span>)
))<span class="question-mark">?</span>;
index_writer.commit()<span class="question-mark">?</span>;
}
<span class="kw">let </span>reader = index.reader()<span class="question-mark">?</span>;
<span class="kw">let </span>searcher = reader.searcher();
{
<span class="kw">let </span><span class="kw-2">mut </span>facet_collector = FacetCollector::for_field(facet);
facet_collector.add_facet(<span class="string">&quot;/lang&quot;</span>);
facet_collector.add_facet(<span class="string">&quot;/category&quot;</span>);
<span class="kw">let </span>facet_counts = searcher.search(<span class="kw-2">&amp;</span>AllQuery, <span class="kw-2">&amp;</span>facet_collector)<span class="question-mark">?</span>;
<span class="comment">// This lists all of the facet counts
</span><span class="kw">let </span>facets: Vec&lt;(<span class="kw-2">&amp;</span>Facet, u64)&gt; = facet_counts
.get(<span class="string">&quot;/category&quot;</span>)
.collect();
<span class="macro">assert_eq!</span>(facets, <span class="macro">vec!</span>[
(<span class="kw-2">&amp;</span>Facet::from(<span class="string">&quot;/category/biography&quot;</span>), <span class="number">1</span>),
(<span class="kw-2">&amp;</span>Facet::from(<span class="string">&quot;/category/fiction&quot;</span>), <span class="number">3</span>)
]);
}
{
<span class="kw">let </span><span class="kw-2">mut </span>facet_collector = FacetCollector::for_field(facet);
facet_collector.add_facet(<span class="string">&quot;/category/fiction&quot;</span>);
<span class="kw">let </span>facet_counts = searcher.search(<span class="kw-2">&amp;</span>AllQuery, <span class="kw-2">&amp;</span>facet_collector)<span class="question-mark">?</span>;
<span class="comment">// This lists all of the facet counts
</span><span class="kw">let </span>facets: Vec&lt;(<span class="kw-2">&amp;</span>Facet, u64)&gt; = facet_counts
.get(<span class="string">&quot;/category/fiction&quot;</span>)
.collect();
<span class="macro">assert_eq!</span>(facets, <span class="macro">vec!</span>[
(<span class="kw-2">&amp;</span>Facet::from(<span class="string">&quot;/category/fiction/fantasy&quot;</span>), <span class="number">2</span>),
(<span class="kw-2">&amp;</span>Facet::from(<span class="string">&quot;/category/fiction/horror&quot;</span>), <span class="number">1</span>),
(<span class="kw-2">&amp;</span>Facet::from(<span class="string">&quot;/category/fiction/sci-fi&quot;</span>), <span class="number">1</span>)
]);
}
{
<span class="kw">let </span><span class="kw-2">mut </span>facet_collector = FacetCollector::for_field(facet);
facet_collector.add_facet(<span class="string">&quot;/category/fiction&quot;</span>);
<span class="kw">let </span>facet_counts = searcher.search(<span class="kw-2">&amp;</span>AllQuery, <span class="kw-2">&amp;</span>facet_collector)<span class="question-mark">?</span>;
<span class="comment">// This lists all of the facet counts
</span><span class="kw">let </span>facets: Vec&lt;(<span class="kw-2">&amp;</span>Facet, u64)&gt; = facet_counts.top_k(<span class="string">&quot;/category/fiction&quot;</span>, <span class="number">1</span>);
<span class="macro">assert_eq!</span>(facets, <span class="macro">vec!</span>[
(<span class="kw-2">&amp;</span>Facet::from(<span class="string">&quot;/category/fiction/fantasy&quot;</span>), <span class="number">2</span>)
]);
}
<span class="prelude-val">Ok</span>(())
}</code></pre></div>
</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-FacetCollector" class="impl has-srclink"><a class="srclink rightside" href="../../src/tantivy/collector/facet_collector.rs.html#213-250">source</a><a href="#impl-FacetCollector" class="anchor"></a><h3 class="code-header">impl <a class="struct" href="struct.FacetCollector.html" title="struct tantivy::collector::FacetCollector">FacetCollector</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.for_field" class="method has-srclink"><a class="srclink rightside" href="../../src/tantivy/collector/facet_collector.rs.html#219-224">source</a><h4 class="code-header">pub fn <a href="#method.for_field" class="fnname">for_field</a>(field: <a class="struct" href="../schema/struct.Field.html" title="struct tantivy::schema::Field">Field</a>) -&gt; <a class="struct" href="struct.FacetCollector.html" title="struct tantivy::collector::FacetCollector">FacetCollector</a></h4></section></summary><div class="docblock"><p>Create a facet collector to collect the facets
from a specific facet <code>Field</code>.</p>
<p>This function does not check whether the field
is of the proper type.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.add_facet" class="method has-srclink"><a class="srclink rightside" href="../../src/tantivy/collector/facet_collector.rs.html#235-249">source</a><h4 class="code-header">pub fn <a href="#method.add_facet" class="fnname">add_facet</a>&lt;T&gt;(&amp;mut self, facet_from: T)<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;<a class="struct" href="../schema/struct.Facet.html" title="struct tantivy::schema::Facet">Facet</a>: From&lt;T&gt;,</span></h4></section></summary><div class="docblock"><p>Adds a facet that we want to record counts</p>
<p>Adding facet <code>Facet::from(&quot;/country&quot;)</code> for instance,
will record the counts of all of the direct children of the facet country
(e.g. <code>/country/FR</code>, <code>/country/UK</code>).</p>
<p>Adding two facets within which one is the prefix of the other is forbidden.
If you need the correct number of unique documents for two such facets,
just add them in a separate <code>FacetCollector</code>.</p>
</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Collector-for-FacetCollector" class="impl has-srclink"><a class="srclink rightside" href="../../src/tantivy/collector/facet_collector.rs.html#252-331">source</a><a href="#impl-Collector-for-FacetCollector" class="anchor"></a><h3 class="code-header">impl <a class="trait" href="trait.Collector.html" title="trait tantivy::collector::Collector">Collector</a> for <a class="struct" href="struct.FacetCollector.html" title="struct tantivy::collector::FacetCollector">FacetCollector</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Fruit" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Fruit" class="anchor"></a><h4 class="code-header">type <a href="trait.Collector.html#associatedtype.Fruit" class="associatedtype">Fruit</a> = <a class="struct" href="struct.FacetCounts.html" title="struct tantivy::collector::FacetCounts">FacetCounts</a></h4></section></summary><div class='docblock'><code>Fruit</code> is the type for the result of our collection.
e.g. <code>usize</code> for the <code>Count</code> collector. <a href="trait.Collector.html#associatedtype.Fruit">Read more</a></div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Child" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Child" class="anchor"></a><h4 class="code-header">type <a href="trait.Collector.html#associatedtype.Child" class="associatedtype">Child</a> = FacetSegmentCollector</h4></section></summary><div class='docblock'>Type of the <code>SegmentCollector</code> associated with this collector.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.for_segment" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/tantivy/collector/facet_collector.rs.html#257-316">source</a><a href="#method.for_segment" class="anchor"></a><h4 class="code-header">fn <a href="trait.Collector.html#tymethod.for_segment" class="fnname">for_segment</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self,<br>&nbsp;&nbsp;&nbsp;&nbsp;_: <a class="type" href="../type.SegmentOrdinal.html" title="type tantivy::SegmentOrdinal">SegmentOrdinal</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;reader: &amp;<a class="struct" href="../struct.SegmentReader.html" title="struct tantivy::SegmentReader">SegmentReader</a><br>) -&gt; <a class="type" href="../type.Result.html" title="type tantivy::Result">Result</a>&lt;FacetSegmentCollector&gt;</h4></section></summary><div class='docblock'><code>set_segment</code> is called before beginning to enumerate
on this segment. <a href="trait.Collector.html#tymethod.for_segment">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.requires_scoring" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/tantivy/collector/facet_collector.rs.html#318-320">source</a><a href="#method.requires_scoring" class="anchor"></a><h4 class="code-header">fn <a href="trait.Collector.html#tymethod.requires_scoring" class="fnname">requires_scoring</a>(&amp;self) -&gt; bool</h4></section></summary><div class='docblock'>Returns true iff the collector requires to compute scores for documents.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.merge_fruits" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/tantivy/collector/facet_collector.rs.html#322-330">source</a><a href="#method.merge_fruits" class="anchor"></a><h4 class="code-header">fn <a href="trait.Collector.html#tymethod.merge_fruits" class="fnname">merge_fruits</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self,<br>&nbsp;&nbsp;&nbsp;&nbsp;segments_facet_counts: Vec&lt;<a class="struct" href="struct.FacetCounts.html" title="struct tantivy::collector::FacetCounts">FacetCounts</a>&gt;<br>) -&gt; <a class="type" href="../type.Result.html" title="type tantivy::Result">Result</a>&lt;<a class="struct" href="struct.FacetCounts.html" title="struct tantivy::collector::FacetCounts">FacetCounts</a>&gt;</h4></section></summary><div class='docblock'>Combines the fruit associated with the collection of each segments
into one fruit. <a href="trait.Collector.html#tymethod.merge_fruits">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.collect_segment" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/tantivy/collector/mod.rs.html#167-203">source</a><a href="#method.collect_segment" class="anchor"></a><h4 class="code-header">fn <a href="trait.Collector.html#method.collect_segment" class="fnname">collect_segment</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self,<br>&nbsp;&nbsp;&nbsp;&nbsp;weight: &amp;dyn <a class="trait" href="../query/trait.Weight.html" title="trait tantivy::query::Weight">Weight</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;segment_ord: u32,<br>&nbsp;&nbsp;&nbsp;&nbsp;reader: &amp;<a class="struct" href="../struct.SegmentReader.html" title="struct tantivy::SegmentReader">SegmentReader</a><br>) -&gt; <a class="type" href="../type.Result.html" title="type tantivy::Result">Result</a>&lt;&lt;Self::<a class="associatedtype" href="trait.Collector.html#associatedtype.Child" title="type tantivy::collector::Collector::Child">Child</a> as <a class="trait" href="trait.SegmentCollector.html" title="trait tantivy::collector::SegmentCollector">SegmentCollector</a>&gt;::<a class="associatedtype" href="trait.SegmentCollector.html#associatedtype.Fruit" title="type tantivy::collector::SegmentCollector::Fruit">Fruit</a>&gt;</h4></section></summary><div class='docblock'>Created a segment collector and</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-FacetCollector" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-FacetCollector" class="anchor"></a><h3 class="code-header">impl RefUnwindSafe for <a class="struct" href="struct.FacetCollector.html" title="struct tantivy::collector::FacetCollector">FacetCollector</a></h3></section><section id="impl-Send-for-FacetCollector" class="impl has-srclink"><a href="#impl-Send-for-FacetCollector" class="anchor"></a><h3 class="code-header">impl Send for <a class="struct" href="struct.FacetCollector.html" title="struct tantivy::collector::FacetCollector">FacetCollector</a></h3></section><section id="impl-Sync-for-FacetCollector" class="impl has-srclink"><a href="#impl-Sync-for-FacetCollector" class="anchor"></a><h3 class="code-header">impl Sync for <a class="struct" href="struct.FacetCollector.html" title="struct tantivy::collector::FacetCollector">FacetCollector</a></h3></section><section id="impl-Unpin-for-FacetCollector" class="impl has-srclink"><a href="#impl-Unpin-for-FacetCollector" class="anchor"></a><h3 class="code-header">impl Unpin for <a class="struct" href="struct.FacetCollector.html" title="struct tantivy::collector::FacetCollector">FacetCollector</a></h3></section><section id="impl-UnwindSafe-for-FacetCollector" class="impl has-srclink"><a href="#impl-UnwindSafe-for-FacetCollector" class="anchor"></a><h3 class="code-header">impl UnwindSafe for <a class="struct" href="struct.FacetCollector.html" title="struct tantivy::collector::FacetCollector">FacetCollector</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-FacetCollector" class="impl has-srclink"><a href="#impl-Any-for-FacetCollector" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; Any for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: 'static + ?Sized,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a href="#method.type_id" class="anchor"></a><h4 class="code-header">fn <a class="fnname">type_id</a>(&amp;self) -&gt; TypeId</h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-FacetCollector" class="impl has-srclink"><a href="#impl-Borrow%3CT%3E-for-FacetCollector" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; Borrow&lt;T&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: ?Sized,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="since rightside" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span><a href="#method.borrow" class="anchor"></a><h4 class="code-header">fn <a class="fnname">borrow</a>(&amp;self) -&gt; &amp;T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-FacetCollector" class="impl has-srclink"><a href="#impl-BorrowMut%3CT%3E-for-FacetCollector" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; BorrowMut&lt;T&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: ?Sized,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="since rightside" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">fn <a class="fnname">borrow_mut</a>(&amp;mut self) -&gt; &amp;mut T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Downcast-for-FacetCollector" class="impl has-srclink"><a class="srclink rightside" href="../../src/downcast_rs/lib.rs.html#190">source</a><a href="#impl-Downcast-for-FacetCollector" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="../../downcast_rs/trait.Downcast.html" title="trait downcast_rs::Downcast">Downcast</a> for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: Any,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into_any" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/downcast_rs/lib.rs.html#191">source</a><a href="#method.into_any" class="anchor"></a><h4 class="code-header">fn <a href="../../downcast_rs/trait.Downcast.html#tymethod.into_any" class="fnname">into_any</a>(self: Box&lt;T, Global&gt;) -&gt; Box&lt;dyn Any + 'static, Global&gt;</h4></section></summary><div class='docblock'>Convert <code>Box&lt;dyn Trait&gt;</code> (where <code>Trait: Downcast</code>) to <code>Box&lt;dyn Any&gt;</code>. <code>Box&lt;dyn Any&gt;</code> can
then be further <code>downcast</code> into <code>Box&lt;ConcreteType&gt;</code> where <code>ConcreteType</code> implements <code>Trait</code>. <a href="../../downcast_rs/trait.Downcast.html#tymethod.into_any">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into_any_rc" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/downcast_rs/lib.rs.html#192">source</a><a href="#method.into_any_rc" class="anchor"></a><h4 class="code-header">fn <a href="../../downcast_rs/trait.Downcast.html#tymethod.into_any_rc" class="fnname">into_any_rc</a>(self: Rc&lt;T&gt;) -&gt; Rc&lt;dyn Any + 'static&gt;</h4></section></summary><div class='docblock'>Convert <code>Rc&lt;Trait&gt;</code> (where <code>Trait: Downcast</code>) to <code>Rc&lt;Any&gt;</code>. <code>Rc&lt;Any&gt;</code> can then be
further <code>downcast</code> into <code>Rc&lt;ConcreteType&gt;</code> where <code>ConcreteType</code> implements <code>Trait</code>. <a href="../../downcast_rs/trait.Downcast.html#tymethod.into_any_rc">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.as_any" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/downcast_rs/lib.rs.html#193">source</a><a href="#method.as_any" class="anchor"></a><h4 class="code-header">fn <a href="../../downcast_rs/trait.Downcast.html#tymethod.as_any" class="fnname">as_any</a>(&amp;self) -&gt; &amp;(dyn Any + 'static)</h4></section></summary><div class='docblock'>Convert <code>&amp;Trait</code> (where <code>Trait: Downcast</code>) to <code>&amp;Any</code>. This is needed since Rust cannot
generate <code>&amp;Any</code>’s vtable from <code>&amp;Trait</code>’s. <a href="../../downcast_rs/trait.Downcast.html#tymethod.as_any">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.as_any_mut" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/downcast_rs/lib.rs.html#194">source</a><a href="#method.as_any_mut" class="anchor"></a><h4 class="code-header">fn <a href="../../downcast_rs/trait.Downcast.html#tymethod.as_any_mut" class="fnname">as_any_mut</a>(&amp;mut self) -&gt; &amp;mut (dyn Any + 'static)</h4></section></summary><div class='docblock'>Convert <code>&amp;mut Trait</code> (where <code>Trait: Downcast</code>) to <code>&amp;Any</code>. This is needed since Rust cannot
generate <code>&amp;mut Any</code>’s vtable from <code>&amp;mut Trait</code>’s. <a href="../../downcast_rs/trait.Downcast.html#tymethod.as_any_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-DowncastSync-for-FacetCollector" class="impl has-srclink"><a class="srclink rightside" href="../../src/downcast_rs/lib.rs.html#204">source</a><a href="#impl-DowncastSync-for-FacetCollector" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="../../downcast_rs/trait.DowncastSync.html" title="trait downcast_rs::DowncastSync">DowncastSync</a> for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: Any + Send + Sync,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into_any_arc" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/downcast_rs/lib.rs.html#205">source</a><a href="#method.into_any_arc" class="anchor"></a><h4 class="code-header">fn <a href="../../downcast_rs/trait.DowncastSync.html#tymethod.into_any_arc" class="fnname">into_any_arc</a>(self: Arc&lt;T&gt;) -&gt; Arc&lt;dyn Any + Sync + Send + 'static&gt;</h4></section></summary><div class='docblock'>Convert <code>Arc&lt;Trait&gt;</code> (where <code>Trait: Downcast</code>) to <code>Arc&lt;Any&gt;</code>. <code>Arc&lt;Any&gt;</code> can then be
further <code>downcast</code> into <code>Arc&lt;ConcreteType&gt;</code> where <code>ConcreteType</code> implements <code>Trait</code>. <a href="../../downcast_rs/trait.DowncastSync.html#tymethod.into_any_arc">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-FacetCollector" class="impl has-srclink"><a href="#impl-From%3CT%3E-for-FacetCollector" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; From&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="since rightside" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a class="fnname">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-FacetCollector" class="impl has-srclink"><a href="#impl-Into%3CU%3E-for-FacetCollector" class="anchor"></a><h3 class="code-header">impl&lt;T, U&gt; Into&lt;U&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;U: From&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="since rightside" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span><a href="#method.into" class="anchor"></a><h4 class="code-header">fn <a class="fnname">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
<p>That is, this conversion is whatever the implementation of
<code>[From]&lt;T&gt; for U</code> chooses to do.</p>
</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Pointable-for-FacetCollector" class="impl has-srclink"><a class="srclink rightside" href="../../src/crossbeam_epoch/atomic.rs.html#194">source</a><a href="#impl-Pointable-for-FacetCollector" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="../../crossbeam_epoch/atomic/trait.Pointable.html" title="trait crossbeam_epoch::atomic::Pointable">Pointable</a> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ALIGN" class="associatedconstant trait-impl has-srclink"><a class="srclink rightside" href="../../src/crossbeam_epoch/atomic.rs.html#195">source</a><a href="#associatedconstant.ALIGN" class="anchor"></a><h4 class="code-header">const <a href="../../crossbeam_epoch/atomic/trait.Pointable.html#associatedconstant.ALIGN" class="constant">ALIGN</a>: usize = mem::align_of::&lt;T&gt;()</h4></section></summary><div class='docblock'>The alignment of pointer.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.Init" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Init" class="anchor"></a><h4 class="code-header">type <a href="../../crossbeam_epoch/atomic/trait.Pointable.html#associatedtype.Init" class="associatedtype">Init</a> = T</h4></section></summary><div class='docblock'>The type for initializers.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.init" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/crossbeam_epoch/atomic.rs.html#199">source</a><a href="#method.init" class="anchor"></a><h4 class="code-header">unsafe fn <a href="../../crossbeam_epoch/atomic/trait.Pointable.html#tymethod.init" class="fnname">init</a>(init: &lt;T as <a class="trait" href="../../crossbeam_epoch/atomic/trait.Pointable.html" title="trait crossbeam_epoch::atomic::Pointable">Pointable</a>&gt;::<a class="associatedtype" href="../../crossbeam_epoch/atomic/trait.Pointable.html#associatedtype.Init" title="type crossbeam_epoch::atomic::Pointable::Init">Init</a>) -&gt; usize</h4></section></summary><div class='docblock'>Initializes a with the given initializer. <a href="../../crossbeam_epoch/atomic/trait.Pointable.html#tymethod.init">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/crossbeam_epoch/atomic.rs.html#203">source</a><a href="#method.deref" class="anchor"></a><h4 class="code-header">unsafe fn <a href="../../crossbeam_epoch/atomic/trait.Pointable.html#tymethod.deref" class="fnname">deref</a>&lt;'a&gt;(ptr: usize) -&gt; &amp;'a T</h4></section></summary><div class='docblock'>Dereferences the given pointer. <a href="../../crossbeam_epoch/atomic/trait.Pointable.html#tymethod.deref">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/crossbeam_epoch/atomic.rs.html#207">source</a><a href="#method.deref_mut" class="anchor"></a><h4 class="code-header">unsafe fn <a href="../../crossbeam_epoch/atomic/trait.Pointable.html#tymethod.deref_mut" class="fnname">deref_mut</a>&lt;'a&gt;(ptr: usize) -&gt; &amp;'a mut T</h4></section></summary><div class='docblock'>Mutably dereferences the given pointer. <a href="../../crossbeam_epoch/atomic/trait.Pointable.html#tymethod.deref_mut">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/crossbeam_epoch/atomic.rs.html#211">source</a><a href="#method.drop" class="anchor"></a><h4 class="code-header">unsafe fn <a href="../../crossbeam_epoch/atomic/trait.Pointable.html#tymethod.drop" class="fnname">drop</a>(ptr: usize)</h4></section></summary><div class='docblock'>Drops the object pointed to by the given pointer. <a href="../../crossbeam_epoch/atomic/trait.Pointable.html#tymethod.drop">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-FacetCollector" class="impl has-srclink"><a href="#impl-TryFrom%3CU%3E-for-FacetCollector" class="anchor"></a><h3 class="code-header">impl&lt;T, U&gt; TryFrom&lt;U&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;U: Into&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a class="associatedtype">Error</a> = Infallible</h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="since rightside" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span><a href="#method.try_from" class="anchor"></a><h4 class="code-header">fn <a class="fnname">try_from</a>(value: U) -&gt; Result&lt;T, &lt;T as TryFrom&lt;U&gt;&gt;::Error&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-FacetCollector" class="impl has-srclink"><a href="#impl-TryInto%3CU%3E-for-FacetCollector" class="anchor"></a><h3 class="code-header">impl&lt;T, U&gt; TryInto&lt;U&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;U: TryFrom&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a class="associatedtype">Error</a> = &lt;U as TryFrom&lt;T&gt;&gt;::Error</h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="since rightside" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span><a href="#method.try_into" class="anchor"></a><h4 class="code-header">fn <a class="fnname">try_into</a>(self) -&gt; Result&lt;U, &lt;U as TryFrom&lt;T&gt;&gt;::Error&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-FacetCollector" class="impl has-srclink"><a class="srclink rightside" href="../../src/ppv_lite86/types.rs.html#221">source</a><a href="#impl-VZip%3CV%3E-for-FacetCollector" class="anchor"></a><h3 class="code-header">impl&lt;V, T&gt; <a class="trait" href="../../ppv_lite86/types/trait.VZip.html" title="trait ppv_lite86::types::VZip">VZip</a>&lt;V&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;V: <a class="trait" href="../../ppv_lite86/types/trait.MultiLane.html" title="trait ppv_lite86::types::MultiLane">MultiLane</a>&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/ppv_lite86/types.rs.html#226">source</a><a href="#method.vzip" class="anchor"></a><h4 class="code-header">fn <a href="../../ppv_lite86/types/trait.VZip.html#tymethod.vzip" class="fnname">vzip</a>(self) -&gt; V</h4></section></div></details><section id="impl-Fruit-for-FacetCollector" class="impl has-srclink"><a class="srclink rightside" href="../../src/tantivy/collector/mod.rs.html#122">source</a><a href="#impl-Fruit-for-FacetCollector" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="trait.Fruit.html" title="trait tantivy::collector::Fruit">Fruit</a> for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: Send + <a class="trait" href="../../downcast_rs/trait.Downcast.html" title="trait downcast_rs::Downcast">Downcast</a>,</span></h3></section></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="tantivy" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.66.0-nightly (5c8bff74b 2022-10-21)" ></div></body></html>