Files
mercator_service/encoding_rs/struct.Encoder.html

159 lines
40 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `Encoder` struct in crate `encoding_rs`."><meta name="keywords" content="rust, rustlang, rust-lang, Encoder"><title>encoding_rs::Encoder - Rust</title><link rel="stylesheet" type="text/css" href="../normalize.css"><link rel="stylesheet" type="text/css" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../dark.css"><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><script src="../storage.js"></script><noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="shortcut icon" href="../favicon.ico"><style type="text/css">#crate-search{background-image:url("../down-arrow.svg");}</style></head><body class="rustdoc struct"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../encoding_rs/index.html'><div class='logo-container'><img src='../rust-logo.png' alt='logo'></div></a><p class='location'>Struct Encoder</p><div class="sidebar-elems"><div class="block items"><a class="sidebar-title" href="#methods">Methods</a><div class="sidebar-links"><a href="#method.encode_from_utf16">encode_from_utf16</a><a href="#method.encode_from_utf16_without_replacement">encode_from_utf16_without_replacement</a><a href="#method.encode_from_utf8">encode_from_utf8</a><a href="#method.encode_from_utf8_to_vec">encode_from_utf8_to_vec</a><a href="#method.encode_from_utf8_to_vec_without_replacement">encode_from_utf8_to_vec_without_replacement</a><a href="#method.encode_from_utf8_without_replacement">encode_from_utf8_without_replacement</a><a href="#method.encoding">encoding</a><a href="#method.has_pending_state">has_pending_state</a><a href="#method.max_buffer_length_from_utf16_if_no_unmappables">max_buffer_length_from_utf16_if_no_unmappables</a><a href="#method.max_buffer_length_from_utf16_without_replacement">max_buffer_length_from_utf16_without_replacement</a><a href="#method.max_buffer_length_from_utf8_if_no_unmappables">max_buffer_length_from_utf8_if_no_unmappables</a><a href="#method.max_buffer_length_from_utf8_without_replacement">max_buffer_length_from_utf8_without_replacement</a></div><a class="sidebar-title" href="#synthetic-implementations">Auto Trait Implementations</a><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><a class="sidebar-title" href="#blanket-implementations">Blanket Implementations</a><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow&lt;T&gt;</a><a href="#impl-BorrowMut%3CT%3E">BorrowMut&lt;T&gt;</a><a href="#impl-From%3CT%3E">From&lt;T&gt;</a><a href="#impl-Into%3CU%3E">Into&lt;U&gt;</a><a href="#impl-TryFrom%3CU%3E">TryFrom&lt;U&gt;</a><a href="#impl-TryInto%3CU%3E">TryInto&lt;U&gt;</a></div></div><p class='location'><a href='index.html'>encoding_rs</a></p><script>window.sidebarCurrent = {name: 'Encoder', ty: 'struct', relpath: ''};</script><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../settings.html"><img src="../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><span class='out-of-band'><span id='render-detail'><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class='inner'>&#x2212;</span>]</a></span><a class='srclink' href='../src/encoding_rs/lib.rs.html#4382-4385' title='goto source code'>[src]</a></span><span class='in-band'>Struct <a href='index.html'>encoding_rs</a>::<wbr><a class="struct" href=''>Encoder</a></span></h1><div class="docblock type-decl hidden-by-usual-hider"><pre class='rust struct'>pub struct Encoder { /* fields omitted */ }</pre></div><div class='docblock'><p>A converter that encodes a Unicode stream into bytes according to a
character encoding in a streaming (incremental) manner.</p>
<p>The various <code>encode_*</code> methods take an input buffer (<code>src</code>) and an output
buffer <code>dst</code> both of which are caller-allocated. There are variants for
both UTF-8 and UTF-16 input buffers.</p>
<p>An <code>encode_*</code> method encode characters from <code>src</code> into bytes characters
stored into <code>dst</code> until one of the following three things happens:</p>
<ol>
<li>
<p>An unmappable character is encountered (<code>*_without_replacement</code> variants
only).</p>
</li>
<li>
<p>The output buffer has been filled so near capacity that the decoder
cannot be sure that processing an additional character of input wouldn't
cause so much output that the output buffer would overflow.</p>
</li>
<li>
<p>All the input characters have been processed.</p>
</li>
</ol>
<p>The <code>encode_*</code> method then returns tuple of a status indicating which one
of the three reasons to return happened, how many input code units (<code>u8</code>
when encoding from UTF-8 and <code>u16</code> when encoding from UTF-16) were read,
how many output bytes were written (except when encoding into <code>Vec&lt;u8&gt;</code>,
whose length change indicates this), and in the case of the variants that
perform replacement, a boolean indicating whether an unmappable
character was replaced with a numeric character reference during the call.</p>
<p>The number of bytes &quot;written&quot; is what's logically written. Garbage may be
written in the output buffer beyond the point logically written to.</p>
<p>In the case of the methods whose name ends with
<code>*_without_replacement</code>, the status is an <a href="enum.EncoderResult.html"><code>EncoderResult</code></a> enumeration
(possibilities <code>Unmappable</code>, <code>OutputFull</code> and <code>InputEmpty</code> corresponding to
the three cases listed above).</p>
<p>In the case of methods whose name does not end with
<code>*_without_replacement</code>, unmappable characters are automatically replaced
with the corresponding numeric character references and unmappable
characters do not cause the methods to return early.</p>
<p>When encoding from UTF-8 without replacement, the methods are guaranteed
not to return indicating that more output space is needed if the length
of the output buffer is at least the length returned by
<a href="#method.max_buffer_length_from_utf8_without_replacement"><code>max_buffer_length_from_utf8_without_replacement()</code></a>. When encoding from
UTF-8 with replacement, the length of the output buffer that guarantees the
methods not to return indicating that more output space is needed in the
absence of unmappable characters is given by
<a href="#method.max_buffer_length_from_utf8_if_no_unmappables"><code>max_buffer_length_from_utf8_if_no_unmappables()</code></a>. When encoding from
UTF-16 without replacement, the methods are guaranteed not to return
indicating that more output space is needed if the length of the output
buffer is at least the length returned by
<a href="#method.max_buffer_length_from_utf16_without_replacement"><code>max_buffer_length_from_utf16_without_replacement()</code></a>. When encoding
from UTF-16 with replacement, the the length of the output buffer that
guarantees the methods not to return indicating that more output space is
needed in the absence of unmappable characters is given by
<a href="#method.max_buffer_length_from_utf16_if_no_unmappables"><code>max_buffer_length_from_utf16_if_no_unmappables()</code></a>.
When encoding with replacement, applications are not expected to size the
buffer for the worst case ahead of time but to resize the buffer if there
are unmappable characters. This is why max length queries are only available
for the case where there are no unmappable characters.</p>
<p>When encoding from UTF-8, each <code>src</code> buffer <em>must</em> be valid UTF-8. (When
calling from Rust, the type system takes care of this.) When encoding from
UTF-16, unpaired surrogates in the input are treated as U+FFFD REPLACEMENT
CHARACTERS. Therefore, in order for astral characters not to turn into a
pair of REPLACEMENT CHARACTERS, the caller must ensure that surrogate pairs
are not split across input buffer boundaries.</p>
<p>After an <code>encode_*</code> call returns, the output produced so far, taken as a
whole from the start of the stream, is guaranteed to consist of a valid
byte sequence in the target encoding. (I.e. the code unit sequence for a
character is guaranteed not to be split across output buffers. However, due
to the stateful nature of ISO-2022-JP, the stream needs to be considered
from the start for it to be valid. For other encodings, the validity holds
on a per-output buffer basis.)</p>
<p>The boolean argument <code>last</code> indicates that the end of the stream is reached
when all the characters in <code>src</code> have been consumed. This argument is needed
for ISO-2022-JP and is ignored for other encodings.</p>
<p>An <code>Encoder</code> object can be used to incrementally encode a byte stream.</p>
<p>During the processing of a single stream, the caller must call <code>encode_*</code>
zero or more times with <code>last</code> set to <code>false</code> and then call <code>encode_*</code> at
least once with <code>last</code> set to <code>true</code>. If <code>encode_*</code> returns <code>InputEmpty</code>,
the processing of the stream has ended. Otherwise, the caller must call
<code>encode_*</code> again with <code>last</code> set to <code>true</code> (or treat an <code>Unmappable</code> result
as a fatal error).</p>
<p>Once the stream has ended, the <code>Encoder</code> object must not be used anymore.
That is, you need to create another one to process another stream.</p>
<p>When the encoder returns <code>OutputFull</code> or the encoder returns <code>Unmappable</code>
and the caller does not wish to treat it as a fatal error, the input buffer
<code>src</code> may not have been completely consumed. In that case, the caller must
pass the unconsumed contents of <code>src</code> to <code>encode_*</code> again upon the next
call.</p>
<h1 id="infinite-loops" class="section-header"><a href="#infinite-loops">Infinite loops</a></h1>
<p>When converting with a fixed-size output buffer whose size is too small to
accommodate one character of output, an infinite loop ensues. When
converting with a fixed-size output buffer, it generally makes sense to
make the buffer fairly large (e.g. couple of kilobytes).</p>
</div><h2 id='methods' class='small-section-header'>Methods<a href='#methods' class='anchor'></a></h2><h3 id='impl' class='impl'><code class='in-band'>impl <a class="struct" href="../encoding_rs/struct.Encoder.html" title="struct encoding_rs::Encoder">Encoder</a></code><a href='#impl' class='anchor'></a><a class='srclink' href='../src/encoding_rs/lib.rs.html#4387-4732' title='goto source code'>[src]</a></h3><div class='impl-items'><h4 id='method.encoding' class="method"><code id='encoding.v'>pub fn <a href='#method.encoding' class='fnname'>encoding</a>(&amp;self) -&gt; &amp;'static <a class="struct" href="../encoding_rs/struct.Encoding.html" title="struct encoding_rs::Encoding">Encoding</a></code><a class='srclink' href='../src/encoding_rs/lib.rs.html#4397-4399' title='goto source code'>[src]</a></h4><div class='docblock'><p>The <code>Encoding</code> this <code>Encoder</code> is for.</p>
</div><h4 id='method.has_pending_state' class="method"><code id='has_pending_state.v'>pub fn <a href='#method.has_pending_state' class='fnname'>has_pending_state</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code><a class='srclink' href='../src/encoding_rs/lib.rs.html#4404-4406' title='goto source code'>[src]</a></h4><div class='docblock'><p>Returns <code>true</code> if this is an ISO-2022-JP encoder that's not in the
ASCII state and <code>false</code> otherwise.</p>
</div><h4 id='method.max_buffer_length_from_utf8_if_no_unmappables' class="method"><code id='max_buffer_length_from_utf8_if_no_unmappables.v'>pub fn <a href='#method.max_buffer_length_from_utf8_if_no_unmappables' class='fnname'>max_buffer_length_from_utf8_if_no_unmappables</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self, <br>&nbsp;&nbsp;&nbsp;&nbsp;byte_length: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;</code><a class='srclink' href='../src/encoding_rs/lib.rs.html#4417-4429' title='goto source code'>[src]</a></h4><div class='docblock'><p>Query the worst-case output size when encoding from UTF-8 with
replacement.</p>
<p>Returns the size of the output buffer in bytes that will not overflow
given the current state of the encoder and <code>byte_length</code> number of
additional input code units if there are no unmappable characters in
the input or <code>None</code> if <code>usize</code> would overflow.</p>
<p>Available via the C wrapper.</p>
</div><h4 id='method.max_buffer_length_from_utf8_without_replacement' class="method"><code id='max_buffer_length_from_utf8_without_replacement.v'>pub fn <a href='#method.max_buffer_length_from_utf8_without_replacement' class='fnname'>max_buffer_length_from_utf8_without_replacement</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self, <br>&nbsp;&nbsp;&nbsp;&nbsp;byte_length: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;</code><a class='srclink' href='../src/encoding_rs/lib.rs.html#4439-4445' title='goto source code'>[src]</a></h4><div class='docblock'><p>Query the worst-case output size when encoding from UTF-8 without
replacement.</p>
<p>Returns the size of the output buffer in bytes that will not overflow
given the current state of the encoder and <code>byte_length</code> number of
additional input code units or <code>None</code> if <code>usize</code> would overflow.</p>
<p>Available via the C wrapper.</p>
</div><h4 id='method.encode_from_utf8' class="method"><code id='encode_from_utf8.v'>pub fn <a href='#method.encode_from_utf8' class='fnname'>encode_from_utf8</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self, <br>&nbsp;&nbsp;&nbsp;&nbsp;src: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;dst: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&amp;mut [</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;last: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="enum" href="../encoding_rs/enum.CoderResult.html" title="enum encoding_rs::CoderResult">CoderResult</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a></code><a class='srclink' href='../src/encoding_rs/lib.rs.html#4454-4527' title='goto source code'>[src]</a></h4><div class='docblock'><p>Incrementally encode into byte stream from UTF-8 with unmappable
characters replaced with HTML (decimal) numeric character references.</p>
<p>See the documentation of the struct for documentation for <code>encode_*</code>
methods collectively.</p>
<p>Available via the C wrapper.</p>
</div><h4 id='method.encode_from_utf8_to_vec' class="method"><code id='encode_from_utf8_to_vec.v'>pub fn <a href='#method.encode_from_utf8_to_vec' class='fnname'>encode_from_utf8_to_vec</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self, <br>&nbsp;&nbsp;&nbsp;&nbsp;src: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;dst: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;, <br>&nbsp;&nbsp;&nbsp;&nbsp;last: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="enum" href="../encoding_rs/enum.CoderResult.html" title="enum encoding_rs::CoderResult">CoderResult</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a></code><a class='srclink' href='../src/encoding_rs/lib.rs.html#4536-4551' title='goto source code'>[src]</a></h4><div class='docblock'><p>Incrementally encode into byte stream from UTF-8 with unmappable
characters replaced with HTML (decimal) numeric character references.</p>
<p>See the documentation of the struct for documentation for <code>encode_*</code>
methods collectively.</p>
<p>Available to Rust only.</p>
</div><h4 id='method.encode_from_utf8_without_replacement' class="method"><code id='encode_from_utf8_without_replacement.v'>pub fn <a href='#method.encode_from_utf8_without_replacement' class='fnname'>encode_from_utf8_without_replacement</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self, <br>&nbsp;&nbsp;&nbsp;&nbsp;src: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;dst: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&amp;mut [</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;last: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="enum" href="../encoding_rs/enum.EncoderResult.html" title="enum encoding_rs::EncoderResult">EncoderResult</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a></code><a class='srclink' href='../src/encoding_rs/lib.rs.html#4559-4566' title='goto source code'>[src]</a></h4><div class='docblock'><p>Incrementally encode into byte stream from UTF-8 <em>without replacement</em>.</p>
<p>See the documentation of the struct for documentation for <code>encode_*</code>
methods collectively.</p>
<p>Available via the C wrapper.</p>
</div><h4 id='method.encode_from_utf8_to_vec_without_replacement' class="method"><code id='encode_from_utf8_to_vec_without_replacement.v'>pub fn <a href='#method.encode_from_utf8_to_vec_without_replacement' class='fnname'>encode_from_utf8_to_vec_without_replacement</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self, <br>&nbsp;&nbsp;&nbsp;&nbsp;src: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;dst: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;, <br>&nbsp;&nbsp;&nbsp;&nbsp;last: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="enum" href="../encoding_rs/enum.EncoderResult.html" title="enum encoding_rs::EncoderResult">EncoderResult</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a></code><a class='srclink' href='../src/encoding_rs/lib.rs.html#4574-4589' title='goto source code'>[src]</a></h4><div class='docblock'><p>Incrementally encode into byte stream from UTF-8 <em>without replacement</em>.</p>
<p>See the documentation of the struct for documentation for <code>encode_*</code>
methods collectively.</p>
<p>Available to Rust only.</p>
</div><h4 id='method.max_buffer_length_from_utf16_if_no_unmappables' class="method"><code id='max_buffer_length_from_utf16_if_no_unmappables.v'>pub fn <a href='#method.max_buffer_length_from_utf16_if_no_unmappables' class='fnname'>max_buffer_length_from_utf16_if_no_unmappables</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self, <br>&nbsp;&nbsp;&nbsp;&nbsp;u16_length: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;</code><a class='srclink' href='../src/encoding_rs/lib.rs.html#4600-4612' title='goto source code'>[src]</a></h4><div class='docblock'><p>Query the worst-case output size when encoding from UTF-16 with
replacement.</p>
<p>Returns the size of the output buffer in bytes that will not overflow
given the current state of the encoder and <code>u16_length</code> number of
additional input code units if there are no unmappable characters in
the input or <code>None</code> if <code>usize</code> would overflow.</p>
<p>Available via the C wrapper.</p>
</div><h4 id='method.max_buffer_length_from_utf16_without_replacement' class="method"><code id='max_buffer_length_from_utf16_without_replacement.v'>pub fn <a href='#method.max_buffer_length_from_utf16_without_replacement' class='fnname'>max_buffer_length_from_utf16_without_replacement</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self, <br>&nbsp;&nbsp;&nbsp;&nbsp;u16_length: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;</code><a class='srclink' href='../src/encoding_rs/lib.rs.html#4622-4628' title='goto source code'>[src]</a></h4><div class='docblock'><p>Query the worst-case output size when encoding from UTF-16 without
replacement.</p>
<p>Returns the size of the output buffer in bytes that will not overflow
given the current state of the encoder and <code>u16_length</code> number of
additional input code units or <code>None</code> if <code>usize</code> would overflow.</p>
<p>Available via the C wrapper.</p>
</div><h4 id='method.encode_from_utf16' class="method"><code id='encode_from_utf16.v'>pub fn <a href='#method.encode_from_utf16' class='fnname'>encode_from_utf16</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self, <br>&nbsp;&nbsp;&nbsp;&nbsp;src: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&amp;[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;dst: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&amp;mut [</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;last: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="enum" href="../encoding_rs/enum.CoderResult.html" title="enum encoding_rs::CoderResult">CoderResult</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a></code><a class='srclink' href='../src/encoding_rs/lib.rs.html#4637-4716' title='goto source code'>[src]</a></h4><div class='docblock'><p>Incrementally encode into byte stream from UTF-16 with unmappable
characters replaced with HTML (decimal) numeric character references.</p>
<p>See the documentation of the struct for documentation for <code>encode_*</code>
methods collectively.</p>
<p>Available via the C wrapper.</p>
</div><h4 id='method.encode_from_utf16_without_replacement' class="method"><code id='encode_from_utf16_without_replacement.v'>pub fn <a href='#method.encode_from_utf16_without_replacement' class='fnname'>encode_from_utf16_without_replacement</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self, <br>&nbsp;&nbsp;&nbsp;&nbsp;src: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&amp;[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;dst: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&amp;mut [</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;last: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="enum" href="../encoding_rs/enum.EncoderResult.html" title="enum encoding_rs::EncoderResult">EncoderResult</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a></code><a class='srclink' href='../src/encoding_rs/lib.rs.html#4724-4731' title='goto source code'>[src]</a></h4><div class='docblock'><p>Incrementally encode into byte stream from UTF-16 <em>without replacement</em>.</p>
<p>See the documentation of the struct for documentation for <code>encode_*</code>
methods collectively.</p>
<p>Available via the C wrapper.</p>
</div></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'><h3 id='impl-RefUnwindSafe' class='impl'><code class='in-band'>impl <a class="trait" href="https://doc.rust-lang.org/nightly/std/panic/trait.RefUnwindSafe.html" title="trait std::panic::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="../encoding_rs/struct.Encoder.html" title="struct encoding_rs::Encoder">Encoder</a></code><a href='#impl-RefUnwindSafe' class='anchor'></a></h3><div class='impl-items'></div><h3 id='impl-Send' class='impl'><code class='in-band'>impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="../encoding_rs/struct.Encoder.html" title="struct encoding_rs::Encoder">Encoder</a></code><a href='#impl-Send' class='anchor'></a></h3><div class='impl-items'></div><h3 id='impl-Sync' class='impl'><code class='in-band'>impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="../encoding_rs/struct.Encoder.html" title="struct encoding_rs::Encoder">Encoder</a></code><a href='#impl-Sync' class='anchor'></a></h3><div class='impl-items'></div><h3 id='impl-Unpin' class='impl'><code class='in-band'>impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="../encoding_rs/struct.Encoder.html" title="struct encoding_rs::Encoder">Encoder</a></code><a href='#impl-Unpin' class='anchor'></a></h3><div class='impl-items'></div><h3 id='impl-UnwindSafe' class='impl'><code class='in-band'>impl <a class="trait" href="https://doc.rust-lang.org/nightly/std/panic/trait.UnwindSafe.html" title="trait std::panic::UnwindSafe">UnwindSafe</a> for <a class="struct" href="../encoding_rs/struct.Encoder.html" title="struct encoding_rs::Encoder">Encoder</a></code><a href='#impl-UnwindSafe' class='anchor'></a></h3><div class='impl-items'></div></div><h2 id='blanket-implementations' class='small-section-header'>Blanket Implementations<a href='#blanket-implementations' class='anchor'></a></h2><div id='blanket-implementations-list'><h3 id='impl-Any' class='impl'><code class='in-band'>impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,&nbsp;</span></code><a href='#impl-Any' class='anchor'></a><a class='srclink' href='https://doc.rust-lang.org/nightly/src/core/any.rs.html#108-112' title='goto source code'>[src]</a></h3><div class='impl-items'><h4 id='method.type_id' class="method hidden"><code id='type_id.v'>fn <a href='https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id' class='fnname'>type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></code><a class='srclink' href='https://doc.rust-lang.org/nightly/src/core/any.rs.html#109-111' title='goto source code'>[src]</a></h4><div class='docblock hidden'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
</div></div><h3 id='impl-Borrow%3CT%3E' class='impl'><code class='in-band'>impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,&nbsp;</span></code><a href='#impl-Borrow%3CT%3E' class='anchor'></a><a class='srclink' href='https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213-217' title='goto source code'>[src]</a></h3><div class='impl-items'><h4 id='method.borrow' class="method hidden"><code id='borrow.v'>fn <a href='https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow' class='fnname'>borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;</a>T</code><a class='srclink' href='https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#214-216' title='goto source code'>[src]</a></h4><div class='docblock hidden'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
</div></div><h3 id='impl-BorrowMut%3CT%3E' class='impl'><code class='in-band'>impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,&nbsp;</span></code><a href='#impl-BorrowMut%3CT%3E' class='anchor'></a><a class='srclink' href='https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220-224' title='goto source code'>[src]</a></h3><div class='impl-items'><h4 id='method.borrow_mut' class="method hidden"><code id='borrow_mut.v'>fn <a href='https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut' class='fnname'>borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut </a>T</code><a class='srclink' href='https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221-223' title='goto source code'>[src]</a></h4><div class='docblock hidden'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
</div></div><h3 id='impl-From%3CT%3E' class='impl'><code class='in-band'>impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</code><a href='#impl-From%3CT%3E' class='anchor'></a><a class='srclink' href='https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#564-568' title='goto source code'>[src]</a></h3><div class='impl-items'><h4 id='method.from' class="method hidden"><code id='from.v'>fn <a href='https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from' class='fnname'>from</a>(t: T) -&gt; T</code><a class='srclink' href='https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#565-567' title='goto source code'>[src]</a></h4><div class='docblock hidden'><p>Performs the conversion.</p>
</div></div><h3 id='impl-Into%3CU%3E' class='impl'><code class='in-band'>impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,&nbsp;</span></code><a href='#impl-Into%3CU%3E' class='anchor'></a><a class='srclink' href='https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#553-560' title='goto source code'>[src]</a></h3><div class='impl-items'><h4 id='method.into' class="method hidden"><code id='into.v'>fn <a href='https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into' class='fnname'>into</a>(self) -&gt; U</code><a class='srclink' href='https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#557-559' title='goto source code'>[src]</a></h4><div class='docblock hidden'><p>Performs the conversion.</p>
</div></div><h3 id='impl-TryFrom%3CU%3E' class='impl'><code class='in-band'>impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,&nbsp;</span></code><a href='#impl-TryFrom%3CU%3E' class='anchor'></a><a class='srclink' href='https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#601-610' title='goto source code'>[src]</a></h3><div class='impl-items'><h4 id='associatedtype.Error' class="type"><code id='Error.t'>type <a href='https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error' class="type">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></code></h4><div class='docblock'><p>The type returned in the event of a conversion error.</p>
</div><h4 id='method.try_from' class="method hidden"><code id='try_from.v'>fn <a href='https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from' class='fnname'>try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="type" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</code><a class='srclink' href='https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#607-609' title='goto source code'>[src]</a></h4><div class='docblock hidden'><p>Performs the conversion.</p>
</div></div><h3 id='impl-TryInto%3CU%3E' class='impl'><code class='in-band'>impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,&nbsp;</span></code><a href='#impl-TryInto%3CU%3E' class='anchor'></a><a class='srclink' href='https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#587-596' title='goto source code'>[src]</a></h3><div class='impl-items'><h4 id='associatedtype.Error-1' class="type"><code id='Error.t-1'>type <a href='https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error' class="type">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="type" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></code></h4><div class='docblock'><p>The type returned in the event of a conversion error.</p>
</div><h4 id='method.try_into' class="method hidden"><code id='try_into.v'>fn <a href='https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into' class='fnname'>try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="type" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</code><a class='srclink' href='https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#593-595' title='goto source code'>[src]</a></h4><div class='docblock hidden'><p>Performs the conversion.</p>
</div></div></div></section><section id="search" class="content hidden"></section><section class="footer"></section><script>window.rootPath = "../";window.currentCrate = "encoding_rs";</script><script src="../aliases.js"></script><script src="../main.js"></script><script defer src="../search-index.js"></script></body></html>