blob: d64f29c2e65c7feafac9aa03f52cf53a5efa660f [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="`IndexWriter` is the user entry-point to add document to an index."><meta name="keywords" content="rust, rustlang, rust-lang, IndexWriter"><title>IndexWriter in tantivy - 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="#">IndexWriter</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.add_document">add_document</a></li><li><a href="#method.commit">commit</a></li><li><a href="#method.commit_opstamp">commit_opstamp</a></li><li><a href="#method.delete_all_documents">delete_all_documents</a></li><li><a href="#method.delete_term">delete_term</a></li><li><a href="#method.garbage_collect_files">garbage_collect_files</a></li><li><a href="#method.get_merge_policy">get_merge_policy</a></li><li><a href="#method.index">index</a></li><li><a href="#method.merge">merge</a></li><li><a href="#method.new_segment">new_segment</a></li><li><a href="#method.prepare_commit">prepare_commit</a></li><li><a href="#method.rollback">rollback</a></li><li><a href="#method.run">run</a></li><li><a href="#method.set_merge_policy">set_merge_policy</a></li><li><a href="#method.wait_merging_threads">wait_merging_threads</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Drop-for-IndexWriter">Drop</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-IndexWriter">!RefUnwindSafe</a></li><li><a href="#impl-Send-for-IndexWriter">Send</a></li><li><a href="#impl-Sync-for-IndexWriter">Sync</a></li><li><a href="#impl-Unpin-for-IndexWriter">Unpin</a></li><li><a href="#impl-UnwindSafe-for-IndexWriter">!UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-IndexWriter">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-IndexWriter">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-IndexWriter">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-Downcast-for-IndexWriter">Downcast</a></li><li><a href="#impl-DowncastSync-for-IndexWriter">DowncastSync</a></li><li><a href="#impl-From%3CT%3E-for-IndexWriter">From&lt;T&gt;</a></li><li><a href="#impl-Fruit-for-IndexWriter">Fruit</a></li><li><a href="#impl-Into%3CU%3E-for-IndexWriter">Into&lt;U&gt;</a></li><li><a href="#impl-Pointable-for-IndexWriter">Pointable</a></li><li><a href="#impl-TryFrom%3CU%3E-for-IndexWriter">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-IndexWriter">TryInto&lt;U&gt;</a></li><li><a href="#impl-VZip%3CV%3E-for-IndexWriter">VZip&lt;V&gt;</a></li></ul></section><h2><a href="index.html">In tantivy</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 class="struct" href="#">IndexWriter</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/indexer/index_writer.rs.html#54-78">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 IndexWriter { /* private fields */ }</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p><code>IndexWriter</code> is the user entry-point to add document to an index.</p>
<p>It manages a small number of indexing thread, as well as a shared
indexing queue.
Each indexing thread builds its own independent <a href="struct.Segment.html" title="Segment"><code>Segment</code></a>, via
a <code>SegmentWriter</code> object.</p>
</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-IndexWriter" class="impl has-srclink"><a class="srclink rightside" href="../src/tantivy/indexer/index_writer.rs.html#248-786">source</a><a href="#impl-IndexWriter" class="anchor"></a><h3 class="code-header">impl <a class="struct" href="struct.IndexWriter.html" title="struct tantivy::IndexWriter">IndexWriter</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.index" class="method has-srclink"><a class="srclink rightside" href="../src/tantivy/indexer/index_writer.rs.html#325-327">source</a><h4 class="code-header">pub fn <a href="#method.index" class="fnname">index</a>(&amp;self) -&gt; &amp;<a class="struct" href="struct.Index.html" title="struct tantivy::Index">Index</a></h4></section></summary><div class="docblock"><p>Accessor to the index.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.wait_merging_threads" class="method has-srclink"><a class="srclink rightside" href="../src/tantivy/indexer/index_writer.rs.html#331-354">source</a><h4 class="code-header">pub fn <a href="#method.wait_merging_threads" class="fnname">wait_merging_threads</a>(self) -&gt; <a class="type" href="type.Result.html" title="type tantivy::Result">Result</a>&lt;()&gt;</h4></section></summary><div class="docblock"><p>If there are some merging threads, blocks until they all finish their work and
then drop the <code>IndexWriter</code>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.new_segment" class="method has-srclink"><a class="srclink rightside" href="../src/tantivy/indexer/index_writer.rs.html#373-375">source</a><h4 class="code-header">pub fn <a href="#method.new_segment" class="fnname">new_segment</a>(&amp;self) -&gt; <a class="struct" href="struct.Segment.html" title="struct tantivy::Segment">Segment</a></h4></section></summary><div class="docblock"><p>Creates a new segment.</p>
<p>This method is useful only for users trying to do complex
operations, like converting an index format to another.</p>
<p>It is safe to start writing file associated with the new <code>Segment</code>.
These will not be garbage collected as long as an instance object of
<code>SegmentMeta</code> object associated with the new <code>Segment</code> is “alive”.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_merge_policy" class="method has-srclink"><a class="srclink rightside" href="../src/tantivy/indexer/index_writer.rs.html#442-444">source</a><h4 class="code-header">pub fn <a href="#method.get_merge_policy" class="fnname">get_merge_policy</a>(&amp;self) -&gt; Arc&lt;dyn <a class="trait" href="merge_policy/trait.MergePolicy.html" title="trait tantivy::merge_policy::MergePolicy">MergePolicy</a>&gt;</h4></section></summary><div class="docblock"><p>Accessor to the merge policy.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_merge_policy" class="method has-srclink"><a class="srclink rightside" href="../src/tantivy/indexer/index_writer.rs.html#447-449">source</a><h4 class="code-header">pub fn <a href="#method.set_merge_policy" class="fnname">set_merge_policy</a>(&amp;self, merge_policy: Box&lt;dyn <a class="trait" href="merge_policy/trait.MergePolicy.html" title="trait tantivy::merge_policy::MergePolicy">MergePolicy</a>&gt;)</h4></section></summary><div class="docblock"><p>Setter for the merge policy.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.garbage_collect_files" class="method has-srclink"><a class="srclink rightside" href="../src/tantivy/indexer/index_writer.rs.html#459-461">source</a><h4 class="code-header">pub fn <a href="#method.garbage_collect_files" class="fnname">garbage_collect_files</a>(&amp;self) -&gt; <a class="struct" href="struct.FutureResult.html" title="struct tantivy::FutureResult">FutureResult</a>&lt;<a class="struct" href="directory/struct.GarbageCollectionResult.html" title="struct tantivy::directory::GarbageCollectionResult">GarbageCollectionResult</a>&gt;<span class="notable-traits"><span class="notable-traits-tooltip"><span class="notable-traits-tooltiptext"><span class="docblock"><span class="notable">Notable traits for <a class="struct" href="struct.FutureResult.html" title="struct tantivy::FutureResult">FutureResult</a>&lt;T&gt;</span><code class="content"><span class="where fmt-newline">impl&lt;T&gt; Future for <a class="struct" href="struct.FutureResult.html" title="struct tantivy::FutureResult">FutureResult</a>&lt;T&gt;</span><span class="where fmt-newline"> type <a class="associatedtype">Output</a> = <a class="type" href="type.Result.html" title="type tantivy::Result">Result</a>&lt;T&gt;;</span></code></span></span></span></span></h4></section></summary><div class="docblock"><p>Detects and removes the files that are not used by the index anymore.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.delete_all_documents" class="method has-srclink"><a class="srclink rightside" href="../src/tantivy/indexer/index_writer.rs.html#499-505">source</a><h4 class="code-header">pub fn <a href="#method.delete_all_documents" class="fnname">delete_all_documents</a>(&amp;self) -&gt; <a class="type" href="type.Result.html" title="type tantivy::Result">Result</a>&lt;<a class="type" href="type.Opstamp.html" title="type tantivy::Opstamp">Opstamp</a>&gt;</h4></section></summary><div class="docblock"><p>Deletes all documents from the index</p>
<p>Requires <code>commit</code>ing
Enables users to rebuild the index,
by clearing and resubmitting necessary documents</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>tantivy::collector::TopDocs;
<span class="kw">use </span>tantivy::query::QueryParser;
<span class="kw">use </span>tantivy::schema::<span class="kw-2">*</span>;
<span class="kw">use </span>tantivy::{doc, Index};
<span class="kw">fn </span>main() -&gt; tantivy::Result&lt;()&gt; {
<span class="kw">let </span><span class="kw-2">mut </span>schema_builder = Schema::builder();
<span class="kw">let </span>title = schema_builder.add_text_field(<span class="string">&quot;title&quot;</span>, TEXT | STORED);
<span class="kw">let </span>schema = schema_builder.build();
<span class="kw">let </span>index = Index::create_in_ram(schema.clone());
<span class="kw">let </span><span class="kw-2">mut </span>index_writer = index.writer_with_num_threads(<span class="number">1</span>, <span class="number">50_000_000</span>)<span class="question-mark">?</span>;
index_writer.add_document(<span class="macro">doc!</span>(title =&gt; <span class="string">&quot;The modern Promotheus&quot;</span>))<span class="question-mark">?</span>;
index_writer.commit()<span class="question-mark">?</span>;
<span class="kw">let </span>clear_res = index_writer.delete_all_documents().unwrap();
<span class="comment">// have to commit, otherwise deleted terms remain available
</span>index_writer.commit()<span class="question-mark">?</span>;
<span class="kw">let </span>searcher = index.reader()<span class="question-mark">?</span>.searcher();
<span class="kw">let </span>query_parser = QueryParser::for_index(<span class="kw-2">&amp;</span>index, <span class="macro">vec!</span>[title]);
<span class="kw">let </span>query_promo = query_parser.parse_query(<span class="string">&quot;Promotheus&quot;</span>)<span class="question-mark">?</span>;
<span class="kw">let </span>top_docs_promo = searcher.search(<span class="kw-2">&amp;</span>query_promo, <span class="kw-2">&amp;</span>TopDocs::with_limit(<span class="number">1</span>))<span class="question-mark">?</span>;
<span class="macro">assert!</span>(top_docs_promo.is_empty());
<span class="prelude-val">Ok</span>(())
}</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.merge" class="method has-srclink"><a class="srclink rightside" href="../src/tantivy/indexer/index_writer.rs.html#512-516">source</a><h4 class="code-header">pub fn <a href="#method.merge" class="fnname">merge</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self,<br>&nbsp;&nbsp;&nbsp;&nbsp;segment_ids: &amp;[<a class="struct" href="struct.SegmentId.html" title="struct tantivy::SegmentId">SegmentId</a>]<br>) -&gt; <a class="struct" href="struct.FutureResult.html" title="struct tantivy::FutureResult">FutureResult</a>&lt;Option&lt;<a class="struct" href="struct.SegmentMeta.html" title="struct tantivy::SegmentMeta">SegmentMeta</a>&gt;&gt;<span class="notable-traits"><span class="notable-traits-tooltip"><span class="notable-traits-tooltiptext"><span class="docblock"><span class="notable">Notable traits for <a class="struct" href="struct.FutureResult.html" title="struct tantivy::FutureResult">FutureResult</a>&lt;T&gt;</span><code class="content"><span class="where fmt-newline">impl&lt;T&gt; Future for <a class="struct" href="struct.FutureResult.html" title="struct tantivy::FutureResult">FutureResult</a>&lt;T&gt;</span><span class="where fmt-newline"> type <a class="associatedtype">Output</a> = <a class="type" href="type.Result.html" title="type tantivy::Result">Result</a>&lt;T&gt;;</span></code></span></span></span></span></h4></section></summary><div class="docblock"><p>Merges a given list of segments.</p>
<p>If all segments are empty no new segment will be created.</p>
<p><code>segment_ids</code> is required to be non-empty.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.rollback" class="method has-srclink"><a class="srclink rightside" href="../src/tantivy/indexer/index_writer.rs.html#541-577">source</a><h4 class="code-header">pub fn <a href="#method.rollback" class="fnname">rollback</a>(&amp;mut self) -&gt; <a class="type" href="type.Result.html" title="type tantivy::Result">Result</a>&lt;<a class="type" href="type.Opstamp.html" title="type tantivy::Opstamp">Opstamp</a>&gt;</h4></section></summary><div class="docblock"><p>Rollback to the last commit</p>
<p>This cancels all of the updates that
happened after the last commit.
After calling rollback, the index is in the same
state as it was after the last commit.</p>
<p>The opstamp at the last commit is returned.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.prepare_commit" class="method has-srclink"><a class="srclink rightside" href="../src/tantivy/indexer/index_writer.rs.html#600-631">source</a><h4 class="code-header">pub fn <a href="#method.prepare_commit" class="fnname">prepare_commit</a>(&amp;mut self) -&gt; <a class="type" href="type.Result.html" title="type tantivy::Result">Result</a>&lt;<a class="struct" href="struct.PreparedCommit.html" title="struct tantivy::PreparedCommit">PreparedCommit</a>&lt;'_&gt;&gt;</h4></section></summary><div class="docblock"><p>Prepares a commit.</p>
<p>Calling <code>prepare_commit()</code> will cut the indexing
queue. All pending documents will be sent to the
indexing workers. They will then terminate, regardless
of the size of their current segment and flush their
work on disk.</p>
<p>Once a commit is “prepared”, you can either
call</p>
<ul>
<li><code>.commit()</code>: to accept this commit</li>
<li><code>.abort()</code>: to cancel this commit.</li>
</ul>
<p>In the current implementation, <a href="struct.PreparedCommit.html" title="PreparedCommit"><code>PreparedCommit</code></a> borrows
the <a href="struct.IndexWriter.html" title="IndexWriter"><code>IndexWriter</code></a> mutably so we are guaranteed that no new
document can be added as long as it is committed or is
dropped.</p>
<p>It is also possible to add a payload to the <code>commit</code>
using this API.
See <a href="struct.PreparedCommit.html#method.set_payload" title="PreparedCommit::set_payload()"><code>PreparedCommit::set_payload()</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.commit" class="method has-srclink"><a class="srclink rightside" href="../src/tantivy/indexer/index_writer.rs.html#646-648">source</a><h4 class="code-header">pub fn <a href="#method.commit" class="fnname">commit</a>(&amp;mut self) -&gt; <a class="type" href="type.Result.html" title="type tantivy::Result">Result</a>&lt;<a class="type" href="type.Opstamp.html" title="type tantivy::Opstamp">Opstamp</a>&gt;</h4></section></summary><div class="docblock"><p>Commits all of the pending changes</p>
<p>A call to commit blocks.
After it returns, all of the document that
were added since the last commit are published
and persisted.</p>
<p>In case of a crash or an hardware failure (as
long as the hard disk is spared), it will be possible
to resume indexing from this point.</p>
<p>Commit returns the <code>opstamp</code> of the last document
that made it in the commit.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.delete_term" class="method has-srclink"><a class="srclink rightside" href="../src/tantivy/indexer/index_writer.rs.html#662-668">source</a><h4 class="code-header">pub fn <a href="#method.delete_term" class="fnname">delete_term</a>(&amp;self, term: <a class="struct" href="schema/struct.Term.html" title="struct tantivy::schema::Term">Term</a>) -&gt; <a class="type" href="type.Opstamp.html" title="type tantivy::Opstamp">Opstamp</a></h4></section></summary><div class="docblock"><p>Delete all documents containing a given term.</p>
<p>Delete operation only affects documents that
were added in previous commits, and documents
that were added previously in the same commit.</p>
<p>Like adds, the deletion itself will be visible
only after calling <code>commit()</code>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.commit_opstamp" class="method has-srclink"><a class="srclink rightside" href="../src/tantivy/indexer/index_writer.rs.html#698-700">source</a><h4 class="code-header">pub fn <a href="#method.commit_opstamp" class="fnname">commit_opstamp</a>(&amp;self) -&gt; <a class="type" href="type.Opstamp.html" title="type tantivy::Opstamp">Opstamp</a></h4></section></summary><div class="docblock"><p>Returns the opstamp of the last successful commit.</p>
<p>This is, for instance, the opstamp the index will
rollback to if there is a failure like a power surge.</p>
<p>This is also the opstamp of the commit that is currently
available for searchers.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.add_document" class="method has-srclink"><a class="srclink rightside" href="../src/tantivy/indexer/index_writer.rs.html#709-713">source</a><h4 class="code-header">pub fn <a href="#method.add_document" class="fnname">add_document</a>(&amp;self, document: <a class="struct" href="schema/struct.Document.html" title="struct tantivy::schema::Document">Document</a>) -&gt; <a class="type" href="type.Result.html" title="type tantivy::Result">Result</a>&lt;<a class="type" href="type.Opstamp.html" title="type tantivy::Opstamp">Opstamp</a>&gt;</h4></section></summary><div class="docblock"><p>Adds a document.</p>
<p>If the indexing pipeline is full, this call may block.</p>
<p>The opstamp is an increasing <code>u64</code> that can
be used by the client to align commits with its own
document queue.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.run" class="method has-srclink"><a class="srclink rightside" href="../src/tantivy/indexer/index_writer.rs.html#744-777">source</a><h4 class="code-header">pub fn <a href="#method.run" class="fnname">run</a>&lt;I&gt;(&amp;self, user_operations: I) -&gt; <a class="type" href="type.Result.html" title="type tantivy::Result">Result</a>&lt;<a class="type" href="type.Opstamp.html" title="type tantivy::Opstamp">Opstamp</a>&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;I: IntoIterator&lt;Item = <a class="enum" href="enum.UserOperation.html" title="enum tantivy::UserOperation">UserOperation</a>&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;I::IntoIter: ExactSizeIterator,</span></h4></section></summary><div class="docblock"><p>Runs a group of document operations ensuring that the operations are
assigned contiguous u64 opstamps and that add operations of the same
group are flushed into the same segment.</p>
<p>If the indexing pipeline is full, this call may block.</p>
<p>Each operation of the given <code>user_operations</code> will receive an in-order,
contiguous u64 opstamp. The entire batch itself is also given an
opstamp that is 1 greater than the last given operation. This
<code>batch_opstamp</code> is the return value of <code>run</code>. An empty group of
<code>user_operations</code>, an empty <code>Vec&lt;UserOperation&gt;</code>, still receives
a valid opstamp even though no changes were <em>actually</em> made to the index.</p>
<p>Like adds and deletes (see <code>IndexWriter.add_document</code> and
<code>IndexWriter.delete_term</code>), the changes made by calling <code>run</code> will be
visible to readers only after calling <code>commit()</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-Drop-for-IndexWriter" class="impl has-srclink"><a class="srclink rightside" href="../src/tantivy/indexer/index_writer.rs.html#788-796">source</a><a href="#impl-Drop-for-IndexWriter" class="anchor"></a><h3 class="code-header">impl Drop for <a class="struct" href="struct.IndexWriter.html" title="struct tantivy::IndexWriter">IndexWriter</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/tantivy/indexer/index_writer.rs.html#789-795">source</a><a href="#method.drop" class="anchor"></a><h4 class="code-header">fn <a class="fnname">drop</a>(&amp;mut self)</h4></section></summary><div class='docblock'>Executes the destructor for this type. <a>Read more</a></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-IndexWriter" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-IndexWriter" class="anchor"></a><h3 class="code-header">impl !RefUnwindSafe for <a class="struct" href="struct.IndexWriter.html" title="struct tantivy::IndexWriter">IndexWriter</a></h3></section><section id="impl-Send-for-IndexWriter" class="impl has-srclink"><a href="#impl-Send-for-IndexWriter" class="anchor"></a><h3 class="code-header">impl Send for <a class="struct" href="struct.IndexWriter.html" title="struct tantivy::IndexWriter">IndexWriter</a></h3></section><section id="impl-Sync-for-IndexWriter" class="impl has-srclink"><a href="#impl-Sync-for-IndexWriter" class="anchor"></a><h3 class="code-header">impl Sync for <a class="struct" href="struct.IndexWriter.html" title="struct tantivy::IndexWriter">IndexWriter</a></h3></section><section id="impl-Unpin-for-IndexWriter" class="impl has-srclink"><a href="#impl-Unpin-for-IndexWriter" class="anchor"></a><h3 class="code-header">impl Unpin for <a class="struct" href="struct.IndexWriter.html" title="struct tantivy::IndexWriter">IndexWriter</a></h3></section><section id="impl-UnwindSafe-for-IndexWriter" class="impl has-srclink"><a href="#impl-UnwindSafe-for-IndexWriter" class="anchor"></a><h3 class="code-header">impl !UnwindSafe for <a class="struct" href="struct.IndexWriter.html" title="struct tantivy::IndexWriter">IndexWriter</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-IndexWriter" class="impl has-srclink"><a href="#impl-Any-for-IndexWriter" 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-IndexWriter" class="impl has-srclink"><a href="#impl-Borrow%3CT%3E-for-IndexWriter" 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-IndexWriter" class="impl has-srclink"><a href="#impl-BorrowMut%3CT%3E-for-IndexWriter" 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-IndexWriter" class="impl has-srclink"><a class="srclink rightside" href="../src/downcast_rs/lib.rs.html#190">source</a><a href="#impl-Downcast-for-IndexWriter" 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-IndexWriter" class="impl has-srclink"><a class="srclink rightside" href="../src/downcast_rs/lib.rs.html#204">source</a><a href="#impl-DowncastSync-for-IndexWriter" 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-IndexWriter" class="impl has-srclink"><a href="#impl-From%3CT%3E-for-IndexWriter" 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-IndexWriter" class="impl has-srclink"><a href="#impl-Into%3CU%3E-for-IndexWriter" 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-IndexWriter" class="impl has-srclink"><a class="srclink rightside" href="../src/crossbeam_epoch/atomic.rs.html#194">source</a><a href="#impl-Pointable-for-IndexWriter" 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-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/crossbeam_epoch/atomic.rs.html#211">source</a><a href="#method.drop-1" 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-IndexWriter" class="impl has-srclink"><a href="#impl-TryFrom%3CU%3E-for-IndexWriter" 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-IndexWriter" class="impl has-srclink"><a href="#impl-TryInto%3CU%3E-for-IndexWriter" 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-IndexWriter" 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-IndexWriter" 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-IndexWriter" class="impl has-srclink"><a class="srclink rightside" href="../src/tantivy/collector/mod.rs.html#122">source</a><a href="#impl-Fruit-for-IndexWriter" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="collector/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>