blob: f28739fb25b7cd5cee6aa870dd93354a1df45424 [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="Raw in-memory compression stream for blocks of data."><meta name="keywords" content="rust, rustlang, rust-lang, Compress"><title>Compress in flate2 - 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="../flate2/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="../flate2/index.html"><div class="logo-container"><img class="rust-logo" src="../rust-logo.svg" alt="logo"></div></a><h2 class="location"><a href="#">Compress</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.compress">compress</a></li><li><a href="#method.compress_vec">compress_vec</a></li><li><a href="#method.new">new</a></li><li><a href="#method.reset">reset</a></li><li><a href="#method.total_in">total_in</a></li><li><a href="#method.total_out">total_out</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Debug-for-Compress">Debug</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-Compress">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Compress">Send</a></li><li><a href="#impl-Sync-for-Compress">Sync</a></li><li><a href="#impl-Unpin-for-Compress">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Compress">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-Compress">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-Compress">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-Compress">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-Compress">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-Compress">Into&lt;U&gt;</a></li><li><a href="#impl-TryFrom%3CU%3E-for-Compress">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-Compress">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In flate2</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">flate2</a>::<wbr><a class="struct" href="#">Compress</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/flate2/mem.rs.html#22-24">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 Compress { /* private fields */ }</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Raw in-memory compression stream for blocks of data.</p>
<p>This type is the building block for the I/O streams in the rest of this
crate. It requires more management than the <a href="https://doc.rust-lang.org/std/io/trait.Read.html"><code>Read</code></a>/<a href="https://doc.rust-lang.org/std/io/trait.Write.html"><code>Write</code></a> API but is
maximally flexible in terms of accepting input from any source and being
able to produce output to any memory location.</p>
<p>It is recommended to use the I/O stream adaptors over this type as they’re
easier to use.</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-Compress" class="impl has-srclink"><a class="srclink rightside" href="../src/flate2/mem.rs.html#190-359">source</a><a href="#impl-Compress" class="anchor"></a><h3 class="code-header">impl <a class="struct" href="struct.Compress.html" title="struct flate2::Compress">Compress</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.new" class="method has-srclink"><a class="srclink rightside" href="../src/flate2/mem.rs.html#196-200">source</a><h4 class="code-header">pub fn <a href="#method.new" class="fnname">new</a>(level: <a class="struct" href="struct.Compression.html" title="struct flate2::Compression">Compression</a>, zlib_header: bool) -&gt; <a class="struct" href="struct.Compress.html" title="struct flate2::Compress">Compress</a></h4></section></summary><div class="docblock"><p>Creates a new object ready for compressing data that it’s given.</p>
<p>The <code>level</code> argument here indicates what level of compression is going
to be performed, and the <code>zlib_header</code> argument indicates whether the
output data should have a zlib header or not.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.total_in" class="method has-srclink"><a class="srclink rightside" href="../src/flate2/mem.rs.html#254-256">source</a><h4 class="code-header">pub fn <a href="#method.total_in" class="fnname">total_in</a>(&amp;self) -&gt; u64</h4></section></summary><div class="docblock"><p>Returns the total number of input bytes which have been processed by
this compression object.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.total_out" class="method has-srclink"><a class="srclink rightside" href="../src/flate2/mem.rs.html#260-262">source</a><h4 class="code-header">pub fn <a href="#method.total_out" class="fnname">total_out</a>(&amp;self) -&gt; u64</h4></section></summary><div class="docblock"><p>Returns the total number of output bytes which have been produced by
this compression object.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.reset" class="method has-srclink"><a class="srclink rightside" href="../src/flate2/mem.rs.html#286-288">source</a><h4 class="code-header">pub fn <a href="#method.reset" class="fnname">reset</a>(&amp;mut self)</h4></section></summary><div class="docblock"><p>Quickly resets this compressor without having to reallocate anything.</p>
<p>This is equivalent to dropping this object and then creating a new one.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.compress" class="method has-srclink"><a class="srclink rightside" href="../src/flate2/mem.rs.html#322-329">source</a><h4 class="code-header">pub fn <a href="#method.compress" class="fnname">compress</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self,<br>&nbsp;&nbsp;&nbsp;&nbsp;input: &amp;[u8],<br>&nbsp;&nbsp;&nbsp;&nbsp;output: &amp;mut [u8],<br>&nbsp;&nbsp;&nbsp;&nbsp;flush: <a class="enum" href="enum.FlushCompress.html" title="enum flate2::FlushCompress">FlushCompress</a><br>) -&gt; Result&lt;<a class="enum" href="enum.Status.html" title="enum flate2::Status">Status</a>, <a class="struct" href="struct.CompressError.html" title="struct flate2::CompressError">CompressError</a>&gt;</h4></section></summary><div class="docblock"><p>Compresses the input data into the output, consuming only as much
input as needed and writing as much output as possible.</p>
<p>The flush option can be any of the available <code>FlushCompress</code> parameters.</p>
<p>To learn how much data was consumed or how much output was produced, use
the <code>total_in</code> and <code>total_out</code> functions before/after this is called.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.compress_vec" class="method has-srclink"><a class="srclink rightside" href="../src/flate2/mem.rs.html#339-358">source</a><h4 class="code-header">pub fn <a href="#method.compress_vec" class="fnname">compress_vec</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self,<br>&nbsp;&nbsp;&nbsp;&nbsp;input: &amp;[u8],<br>&nbsp;&nbsp;&nbsp;&nbsp;output: &amp;mut Vec&lt;u8&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;flush: <a class="enum" href="enum.FlushCompress.html" title="enum flate2::FlushCompress">FlushCompress</a><br>) -&gt; Result&lt;<a class="enum" href="enum.Status.html" title="enum flate2::Status">Status</a>, <a class="struct" href="struct.CompressError.html" title="struct flate2::CompressError">CompressError</a>&gt;</h4></section></summary><div class="docblock"><p>Compresses the input data into the extra space of the output, consuming
only as much input as needed and writing as much output as possible.</p>
<p>This function has the same semantics as <code>compress</code>, except that the
length of <code>vec</code> is managed by this function. This will not reallocate
the vector provided or attempt to grow it, so space for the output must
be reserved in the output vector by the caller before calling this
function.</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-Debug-for-Compress" class="impl has-srclink"><a class="srclink rightside" href="../src/flate2/mem.rs.html#21">source</a><a href="#impl-Debug-for-Compress" class="anchor"></a><h3 class="code-header">impl Debug for <a class="struct" href="struct.Compress.html" title="struct flate2::Compress">Compress</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/flate2/mem.rs.html#21">source</a><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a class="fnname">fmt</a>(&amp;self, f: &amp;mut Formatter&lt;'_&gt;) -&gt; Result</h4></section></summary><div class='docblock'>Formats the value using the given formatter. <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-Compress" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-Compress" class="anchor"></a><h3 class="code-header">impl RefUnwindSafe for <a class="struct" href="struct.Compress.html" title="struct flate2::Compress">Compress</a></h3></section><section id="impl-Send-for-Compress" class="impl has-srclink"><a href="#impl-Send-for-Compress" class="anchor"></a><h3 class="code-header">impl Send for <a class="struct" href="struct.Compress.html" title="struct flate2::Compress">Compress</a></h3></section><section id="impl-Sync-for-Compress" class="impl has-srclink"><a href="#impl-Sync-for-Compress" class="anchor"></a><h3 class="code-header">impl Sync for <a class="struct" href="struct.Compress.html" title="struct flate2::Compress">Compress</a></h3></section><section id="impl-Unpin-for-Compress" class="impl has-srclink"><a href="#impl-Unpin-for-Compress" class="anchor"></a><h3 class="code-header">impl Unpin for <a class="struct" href="struct.Compress.html" title="struct flate2::Compress">Compress</a></h3></section><section id="impl-UnwindSafe-for-Compress" class="impl has-srclink"><a href="#impl-UnwindSafe-for-Compress" class="anchor"></a><h3 class="code-header">impl UnwindSafe for <a class="struct" href="struct.Compress.html" title="struct flate2::Compress">Compress</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-Compress" class="impl has-srclink"><a href="#impl-Any-for-Compress" 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-Compress" class="impl has-srclink"><a href="#impl-Borrow%3CT%3E-for-Compress" 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-Compress" class="impl has-srclink"><a href="#impl-BorrowMut%3CT%3E-for-Compress" 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-From%3CT%3E-for-Compress" class="impl has-srclink"><a href="#impl-From%3CT%3E-for-Compress" 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-Compress" class="impl has-srclink"><a href="#impl-Into%3CU%3E-for-Compress" 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-TryFrom%3CU%3E-for-Compress" class="impl has-srclink"><a href="#impl-TryFrom%3CU%3E-for-Compress" 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-Compress" class="impl has-srclink"><a href="#impl-TryInto%3CU%3E-for-Compress" 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></div></section></div></main><div id="rustdoc-vars" data-root-path="../" data-current-crate="flate2" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.66.0-nightly (5c8bff74b 2022-10-21)" ></div></body></html>