Files
GopherGate/target/doc/zerovec/ule/trait.VarULE.html
2026-02-26 12:00:21 -05:00

97 lines
33 KiB
HTML

<!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="Variable-width, byte-aligned data that can be cast to and from a little-endian byte slice."><title>VarULE in zerovec::ule - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="zerovec" data-themes="" data-resource-suffix="" data-rustdoc-version="1.93.1 (01f6ddf75 2026-02-11) (Arch Linux rust 1:1.93.1-1)" data-channel="1.93.1" data-search-js="search-9e2438ea.js" data-stringdex-js="stringdex-a3946164.js" data-settings-js="settings-c38705f0.js" ><script src="../../static.files/storage-e2aeef58.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a410ff4d.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-044be391.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><rustdoc-topbar><h2><a href="#">VarULE</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../zerovec/index.html">zerovec</a><span class="version">0.11.5</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">VarULE</a></h2><h3><a href="#">Sections</a></h3><ul class="block top-toc"><li><a href="#safety" title="Safety">Safety</a></li><li><a href="#equality-invariant" title="Equality invariant">Equality invariant</a></li></ul><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.from_bytes_unchecked" title="from_bytes_unchecked">from_bytes_unchecked</a></li><li><a href="#tymethod.validate_bytes" title="validate_bytes">validate_bytes</a></li></ul><h3><a href="#provided-methods">Provided Methods</a></h3><ul class="block"><li><a href="#method.as_bytes" title="as_bytes">as_bytes</a></li><li><a href="#method.parse_bytes" title="parse_bytes">parse_bytes</a></li></ul><h3><a href="#foreign-impls">Implementations on Foreign Types</a></h3><ul class="block"><li><a href="#impl-VarULE-for-%5BT%5D" title="[T]">[T]</a></li><li><a href="#impl-VarULE-for-str" title="str">str</a></li></ul><h3><a href="#dyn-compatibility">Dyn Compatibility</a></h3><h3><a href="#implementors">Implementors</a></h3></section><div id="rustdoc-modnav"><h2><a href="index.html">In zerovec::<wbr>ule</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../index.html">zerovec</a>::<wbr><a href="index.html">ule</a></div><h1>Trait <span class="trait">VarULE</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../../src/zerovec/ule/mod.rs.html#296-376">Source</a> </span></div><pre class="rust item-decl"><code>pub unsafe trait VarULE: 'static {
// Required methods
fn <a href="#tymethod.validate_bytes" class="fn">validate_bytes</a>(_bytes: &amp;[<a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.u8.html">u8</a>]) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.93.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.unit.html">()</a>, <a class="enum" href="enum.UleError.html" title="enum zerovec::ule::UleError">UleError</a>&gt;;
<span class="item-spacer"></span> unsafe fn <a href="#tymethod.from_bytes_unchecked" class="fn">from_bytes_unchecked</a>(bytes: &amp;[<a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.u8.html">u8</a>]) -&gt; &amp;Self;
// Provided methods
fn <a href="#method.parse_bytes" class="fn">parse_bytes</a>(bytes: &amp;[<a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.u8.html">u8</a>]) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.93.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;&amp;Self, <a class="enum" href="enum.UleError.html" title="enum zerovec::ule::UleError">UleError</a>&gt; { ... }
<span class="item-spacer"></span> fn <a href="#method.as_bytes" class="fn">as_bytes</a>(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&amp;[u8]"></a> { ... }
}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Variable-width, byte-aligned data that can be cast to and from a little-endian byte slice.</p>
<p>If you need to implement this trait, consider using <a href="../attr.make_varule.html" title="attr zerovec::make_varule"><code>#[make_varule]</code></a> or
<a href="derive.VarULE.html" title="derive zerovec::ule::VarULE"><code>#[derive(VarULE)]</code></a> instead.</p>
<p>This trait is mostly for unsized types like <code>str</code> and <code>[T]</code>. It can be implemented on sized types;
however, it is much more preferable to use <a href="trait.ULE.html" title="trait zerovec::ule::ULE"><code>ULE</code></a> for that purpose. The <a href="custom/index.html" title="mod zerovec::ule::custom"><code>custom</code></a> module contains
additional documentation on how this type can be implemented on custom types.</p>
<p>If deserialization with <code>VarZeroVec</code> is desired is recommended to implement <code>Deserialize</code> for
<code>Box&lt;T&gt;</code> (serde does not do this automatically for unsized <code>T</code>).</p>
<p>For convenience it is typically desired to implement <a href="trait.EncodeAsVarULE.html" title="trait zerovec::ule::EncodeAsVarULE"><code>EncodeAsVarULE</code></a> and <a href="../../zerofrom/zero_from/trait.ZeroFrom.html" title="trait zerofrom::zero_from::ZeroFrom"><code>ZeroFrom</code></a>
on some stack type to convert to and from the ULE type efficiently when necessary.</p>
<h2 id="safety"><a class="doc-anchor" href="#safety">§</a>Safety</h2>
<p>Safety checklist for <code>VarULE</code>:</p>
<ol>
<li>The type <em>must not</em> include any uninitialized or padding bytes.</li>
<li>The type must have an alignment of 1 byte.</li>
<li>The impl of <a href="trait.VarULE.html#tymethod.validate_bytes" title="associated function zerovec::ule::VarULE::validate_bytes"><code>VarULE::validate_bytes()</code></a> <em>must</em> return an error if the given byte slice
would not represent a valid slice of this type.</li>
<li>The impl of <a href="trait.VarULE.html#tymethod.validate_bytes" title="associated function zerovec::ule::VarULE::validate_bytes"><code>VarULE::validate_bytes()</code></a> <em>must</em> return an error if the given byte slice
cannot be used in its entirety.</li>
<li>The impl of <a href="trait.VarULE.html#tymethod.from_bytes_unchecked" title="associated function zerovec::ule::VarULE::from_bytes_unchecked"><code>VarULE::from_bytes_unchecked()</code></a> must produce a reference to the same
underlying data assuming that the given bytes previously passed validation.</li>
<li>All other methods <em>must</em> be left with their default impl, or else implemented according to
their respective safety guidelines.</li>
<li>Acknowledge the following note about the equality invariant.</li>
</ol>
<p>If the ULE type is a struct only containing other ULE/VarULE types (or other types which satisfy invariants 1 and 2,
like <code>[u8; N]</code>), invariants 1 and 2 can be achieved via <code>#[repr(C, packed)]</code> or <code>#[repr(transparent)]</code>.</p>
<h2 id="equality-invariant"><a class="doc-anchor" href="#equality-invariant">§</a>Equality invariant</h2>
<p>A non-safety invariant is that if <code>Self</code> implements <code>PartialEq</code>, the it <em>must</em> be logically
equivalent to byte equality on <a href="trait.VarULE.html#method.as_bytes"><code>Self::as_bytes()</code></a>.</p>
<p>It may be necessary to introduce a “canonical form” of the ULE if logical equality does not
equal byte equality. In such a case, <a href="trait.VarULE.html#tymethod.validate_bytes" title="associated function zerovec::ule::VarULE::validate_bytes"><code>Self::validate_bytes()</code></a> should return an error
for any values that are not in canonical form. For example, the decimal strings “1.23e4” and
“12.3e3” are logically equal, but not byte-for-byte equal, so we could define a canonical form
where only a single digit is allowed before <code>.</code>.</p>
<p>There may also be cases where a <code>VarULE</code> has muiltiple canonical forms, such as a faster
version and a smaller version. The cleanest way to handle this case would be separate types.
However, if this is not feasible, then the application should ensure that the data it is
deserializing is in the expected form. For example, if the data is being loaded from an
external source, then requests could carry information about the expected form of the data.</p>
<p>Failure to follow this invariant will cause surprising behavior in <code>PartialEq</code>, which may
result in unpredictable operations on <code>ZeroVec</code>, <code>VarZeroVec</code>, and <code>ZeroMap</code>.</p>
</div></details><h2 id="required-methods" class="section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="tymethod.validate_bytes" class="method"><a class="src rightside" href="../../src/zerovec/ule/mod.rs.html#302">Source</a><h4 class="code-header">fn <a href="#tymethod.validate_bytes" class="fn">validate_bytes</a>(_bytes: &amp;[<a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.u8.html">u8</a>]) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.93.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.unit.html">()</a>, <a class="enum" href="enum.UleError.html" title="enum zerovec::ule::UleError">UleError</a>&gt;</h4></section></summary><div class="docblock"><p>Validates a byte slice, <code>&amp;[u8]</code>.</p>
<p>If <code>Self</code> is not well-defined for all possible bit values, the bytes should be validated.
If the bytes can be transmuted, <em>in their entirety</em>, to a valid <code>&amp;Self</code>, then <code>Ok</code> should
be returned; otherwise, <code>Self::Error</code> should be returned.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.from_bytes_unchecked" class="method"><a class="src rightside" href="../../src/zerovec/ule/mod.rs.html#342">Source</a><h4 class="code-header">unsafe fn <a href="#tymethod.from_bytes_unchecked" class="fn">from_bytes_unchecked</a>(bytes: &amp;[<a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.u8.html">u8</a>]) -&gt; &amp;Self</h4></section></summary><div class="docblock"><p>Takes a byte slice, <code>&amp;[u8]</code>, and return it as <code>&amp;Self</code> with the same lifetime, assuming
that this byte slice has previously been run through <a href="trait.VarULE.html#method.parse_bytes"><code>Self::parse_bytes()</code></a> with
success.</p>
<h5 id="safety-1"><a class="doc-anchor" href="#safety-1">§</a>Safety</h5><h6 id="callers"><a class="doc-anchor" href="#callers">§</a>Callers</h6>
<p>Callers of this method must take care to ensure that <code>bytes</code> was previously passed through
<a href="trait.VarULE.html#tymethod.validate_bytes"><code>Self::validate_bytes()</code></a> with success (and was not changed since then).</p>
<h6 id="implementors-1"><a class="doc-anchor" href="#implementors-1">§</a>Implementors</h6>
<p>Implementations of this method may call unsafe functions to cast the pointer to the correct
type, assuming the “Callers” invariant above.</p>
<p>Safety checklist:</p>
<ol>
<li>This method <em>must</em> return the same result as <a href="trait.VarULE.html#method.parse_bytes"><code>Self::parse_bytes()</code></a>.</li>
<li>This method <em>must</em> return a slice to the same region of memory as the argument.</li>
</ol>
</div></details></div><h2 id="provided-methods" class="section-header">Provided Methods<a href="#provided-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="method.parse_bytes" class="method"><a class="src rightside" href="../../src/zerovec/ule/mod.rs.html#315-320">Source</a><h4 class="code-header">fn <a href="#method.parse_bytes" class="fn">parse_bytes</a>(bytes: &amp;[<a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.u8.html">u8</a>]) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.93.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;&amp;Self, <a class="enum" href="enum.UleError.html" title="enum zerovec::ule::UleError">UleError</a>&gt;</h4></section></summary><div class="docblock"><p>Parses a byte slice, <code>&amp;[u8]</code>, and return it as <code>&amp;Self</code> with the same lifetime.</p>
<p>If <code>Self</code> is not well-defined for all possible bit values, the bytes should be validated,
and an error should be returned in the same cases as <a href="trait.VarULE.html#tymethod.validate_bytes"><code>Self::validate_bytes()</code></a>.</p>
<p>The default implementation executes <a href="trait.VarULE.html#tymethod.validate_bytes"><code>Self::validate_bytes()</code></a> followed by
<a href="trait.VarULE.html#tymethod.from_bytes_unchecked"><code>Self::from_bytes_unchecked</code></a>.</p>
<p>Note: The following equality should hold: <code>size_of_val(result) == size_of_val(bytes)</code>,
where <code>result</code> is the successful return value of the method. This means that the return
value spans the entire byte slice.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.as_bytes" class="method"><a class="src rightside" href="../../src/zerovec/ule/mod.rs.html#353-355">Source</a><h4 class="code-header">fn <a href="#method.as_bytes" class="fn">as_bytes</a>(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&amp;[u8]"></a></h4></section></summary><div class="docblock"><p>Given <code>&amp;Self</code>, returns a <code>&amp;[u8]</code> with the same lifetime.</p>
<p>The default implementation performs a pointer cast to the same region of memory.</p>
<h5 id="safety-2"><a class="doc-anchor" href="#safety-2">§</a>Safety</h5>
<p>Implementations of this method should call potentially unsafe functions to cast the
pointer to the correct type.</p>
</div></details></div><h2 id="dyn-compatibility" class="section-header">Dyn Compatibility<a href="#dyn-compatibility" class="anchor">§</a></h2><div class="dyn-compatibility-info"><p>This trait is <b>not</b> <a href="https://doc.rust-lang.org/1.93.1/reference/items/traits.html#dyn-compatibility">dyn compatible</a>.</p><p><i>In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.</i></p></div><h2 id="foreign-impls" class="section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-VarULE-for-str" class="impl"><a class="src rightside" href="../../src/zerovec/ule/slices.rs.html#44-61">Source</a><a href="#impl-VarULE-for-str" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.VarULE.html" title="trait zerovec::ule::VarULE">VarULE</a> for <a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.str.html">str</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from_bytes_unchecked" class="method trait-impl"><a class="src rightside" href="../../src/zerovec/ule/slices.rs.html#58-60">Source</a><a href="#method.from_bytes_unchecked" class="anchor">§</a><h4 class="code-header">unsafe fn <a href="#tymethod.from_bytes_unchecked" class="fn">from_bytes_unchecked</a>(bytes: &amp;[<a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.u8.html">u8</a>]) -&gt; &amp;Self</h4></section></summary><div class="docblock"><p>Invariant: must be safe to call when called on a slice that previously
succeeded with <code>parse_bytes</code></p>
</div></details><section id="method.validate_bytes" class="method trait-impl"><a class="src rightside" href="../../src/zerovec/ule/slices.rs.html#46-49">Source</a><a href="#method.validate_bytes" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.validate_bytes" class="fn">validate_bytes</a>(bytes: &amp;[<a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.u8.html">u8</a>]) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.93.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.unit.html">()</a>, <a class="enum" href="enum.UleError.html" title="enum zerovec::ule::UleError">UleError</a>&gt;</h4></section><section id="method.parse_bytes-1" class="method trait-impl"><a class="src rightside" href="../../src/zerovec/ule/slices.rs.html#52-54">Source</a><a href="#method.parse_bytes-1" class="anchor">§</a><h4 class="code-header">fn <a href="#method.parse_bytes" class="fn">parse_bytes</a>(bytes: &amp;[<a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.u8.html">u8</a>]) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.93.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;&amp;Self, <a class="enum" href="enum.UleError.html" title="enum zerovec::ule::UleError">UleError</a>&gt;</h4></section></div></details><details class="toggle implementors-toggle"><summary><section id="impl-VarULE-for-%5BT%5D" class="impl"><a class="src rightside" href="../../src/zerovec/ule/slices.rs.html#89-102">Source</a><a href="#impl-VarULE-for-%5BT%5D" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="trait.VarULE.html" title="trait zerovec::ule::VarULE">VarULE</a> for <a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.slice.html">[T]</a><div class="where">where
T: <a class="trait" href="trait.ULE.html" title="trait zerovec::ule::ULE">ULE</a>,</div></h3><div class="docblock"><p>Note: VarULE is well-defined for all <code>[T]</code> where <code>T: ULE</code>, but <a href="../struct.ZeroSlice.html" title="struct zerovec::ZeroSlice"><code>ZeroSlice</code></a> is more ergonomic
when <code>T</code> is a low-level ULE type. For example:</p>
</div></section></summary><div class="docblock">
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="comment">// OK: [u8] is a useful type
</span><span class="kw">let _</span>: VarZeroVec&lt;[u8]&gt; = <span class="macro">unimplemented!</span>();
<span class="comment">// Technically works, but [u32::ULE] is not very useful
</span><span class="kw">let _</span>: VarZeroVec&lt;[&lt;u32 <span class="kw">as </span>AsULE&gt;::ULE]&gt; = <span class="macro">unimplemented!</span>();
<span class="comment">// Better: ZeroSlice&lt;u32&gt;
</span><span class="kw">let _</span>: VarZeroVec&lt;ZeroSlice&lt;u32&gt;&gt; = <span class="macro">unimplemented!</span>();</code></pre></div></div><div class="impl-items"><section id="method.validate_bytes-1" class="method trait-impl"><a class="src rightside" href="../../src/zerovec/ule/slices.rs.html#94-96">Source</a><a href="#method.validate_bytes-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.validate_bytes" class="fn">validate_bytes</a>(slice: &amp;[<a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.u8.html">u8</a>]) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.93.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.unit.html">()</a>, <a class="enum" href="enum.UleError.html" title="enum zerovec::ule::UleError">UleError</a>&gt;</h4></section><section id="method.from_bytes_unchecked-1" class="method trait-impl"><a class="src rightside" href="../../src/zerovec/ule/slices.rs.html#99-101">Source</a><a href="#method.from_bytes_unchecked-1" class="anchor">§</a><h4 class="code-header">unsafe fn <a href="#tymethod.from_bytes_unchecked" class="fn">from_bytes_unchecked</a>(bytes: &amp;[<a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.u8.html">u8</a>]) -&gt; &amp;Self</h4></section></div></details><h2 id="implementors" class="section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-VarULE-for-VarTupleULE%3CA,+V%3E" class="impl"><a class="src rightside" href="../../src/zerovec/ule/vartuple.rs.html#106-147">Source</a><a href="#impl-VarULE-for-VarTupleULE%3CA,+V%3E" class="anchor">§</a><h3 class="code-header">impl&lt;A, V&gt; <a class="trait" href="trait.VarULE.html" title="trait zerovec::ule::VarULE">VarULE</a> for <a class="struct" href="vartuple/struct.VarTupleULE.html" title="struct zerovec::ule::vartuple::VarTupleULE">VarTupleULE</a>&lt;A, V&gt;<div class="where">where
A: <a class="trait" href="trait.AsULE.html" title="trait zerovec::ule::AsULE">AsULE</a> + 'static,
V: <a class="trait" href="trait.VarULE.html" title="trait zerovec::ule::VarULE">VarULE</a> + ?<a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section><section id="impl-VarULE-for-Tuple6VarULE%3CA,+B,+C,+D,+E,+F,+Format%3E" class="impl"><a class="src rightside" href="../../src/zerovec/ule/tuplevar.rs.html#244">Source</a><a href="#impl-VarULE-for-Tuple6VarULE%3CA,+B,+C,+D,+E,+F,+Format%3E" class="anchor">§</a><h3 class="code-header">impl&lt;A: <a class="trait" href="trait.VarULE.html" title="trait zerovec::ule::VarULE">VarULE</a> + ?<a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, B: <a class="trait" href="trait.VarULE.html" title="trait zerovec::ule::VarULE">VarULE</a> + ?<a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, C: <a class="trait" href="trait.VarULE.html" title="trait zerovec::ule::VarULE">VarULE</a> + ?<a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, D: <a class="trait" href="trait.VarULE.html" title="trait zerovec::ule::VarULE">VarULE</a> + ?<a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, E: <a class="trait" href="trait.VarULE.html" title="trait zerovec::ule::VarULE">VarULE</a> + ?<a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, F: <a class="trait" href="trait.VarULE.html" title="trait zerovec::ule::VarULE">VarULE</a> + ?<a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, Format: <a class="trait" href="../vecs/trait.VarZeroVecFormat.html" title="trait zerovec::vecs::VarZeroVecFormat">VarZeroVecFormat</a>&gt; <a class="trait" href="trait.VarULE.html" title="trait zerovec::ule::VarULE">VarULE</a> for <a class="struct" href="tuplevar/struct.Tuple6VarULE.html" title="struct zerovec::ule::tuplevar::Tuple6VarULE">Tuple6VarULE</a>&lt;A, B, C, D, E, F, Format&gt;</h3></section><section id="impl-VarULE-for-Tuple5VarULE%3CA,+B,+C,+D,+E,+Format%3E" class="impl"><a class="src rightside" href="../../src/zerovec/ule/tuplevar.rs.html#243">Source</a><a href="#impl-VarULE-for-Tuple5VarULE%3CA,+B,+C,+D,+E,+Format%3E" class="anchor">§</a><h3 class="code-header">impl&lt;A: <a class="trait" href="trait.VarULE.html" title="trait zerovec::ule::VarULE">VarULE</a> + ?<a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, B: <a class="trait" href="trait.VarULE.html" title="trait zerovec::ule::VarULE">VarULE</a> + ?<a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, C: <a class="trait" href="trait.VarULE.html" title="trait zerovec::ule::VarULE">VarULE</a> + ?<a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, D: <a class="trait" href="trait.VarULE.html" title="trait zerovec::ule::VarULE">VarULE</a> + ?<a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, E: <a class="trait" href="trait.VarULE.html" title="trait zerovec::ule::VarULE">VarULE</a> + ?<a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, Format: <a class="trait" href="../vecs/trait.VarZeroVecFormat.html" title="trait zerovec::vecs::VarZeroVecFormat">VarZeroVecFormat</a>&gt; <a class="trait" href="trait.VarULE.html" title="trait zerovec::ule::VarULE">VarULE</a> for <a class="struct" href="tuplevar/struct.Tuple5VarULE.html" title="struct zerovec::ule::tuplevar::Tuple5VarULE">Tuple5VarULE</a>&lt;A, B, C, D, E, Format&gt;</h3></section><section id="impl-VarULE-for-Tuple4VarULE%3CA,+B,+C,+D,+Format%3E" class="impl"><a class="src rightside" href="../../src/zerovec/ule/tuplevar.rs.html#242">Source</a><a href="#impl-VarULE-for-Tuple4VarULE%3CA,+B,+C,+D,+Format%3E" class="anchor">§</a><h3 class="code-header">impl&lt;A: <a class="trait" href="trait.VarULE.html" title="trait zerovec::ule::VarULE">VarULE</a> + ?<a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, B: <a class="trait" href="trait.VarULE.html" title="trait zerovec::ule::VarULE">VarULE</a> + ?<a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, C: <a class="trait" href="trait.VarULE.html" title="trait zerovec::ule::VarULE">VarULE</a> + ?<a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, D: <a class="trait" href="trait.VarULE.html" title="trait zerovec::ule::VarULE">VarULE</a> + ?<a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, Format: <a class="trait" href="../vecs/trait.VarZeroVecFormat.html" title="trait zerovec::vecs::VarZeroVecFormat">VarZeroVecFormat</a>&gt; <a class="trait" href="trait.VarULE.html" title="trait zerovec::ule::VarULE">VarULE</a> for <a class="struct" href="tuplevar/struct.Tuple4VarULE.html" title="struct zerovec::ule::tuplevar::Tuple4VarULE">Tuple4VarULE</a>&lt;A, B, C, D, Format&gt;</h3></section><section id="impl-VarULE-for-Tuple3VarULE%3CA,+B,+C,+Format%3E" class="impl"><a class="src rightside" href="../../src/zerovec/ule/tuplevar.rs.html#241">Source</a><a href="#impl-VarULE-for-Tuple3VarULE%3CA,+B,+C,+Format%3E" class="anchor">§</a><h3 class="code-header">impl&lt;A: <a class="trait" href="trait.VarULE.html" title="trait zerovec::ule::VarULE">VarULE</a> + ?<a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, B: <a class="trait" href="trait.VarULE.html" title="trait zerovec::ule::VarULE">VarULE</a> + ?<a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, C: <a class="trait" href="trait.VarULE.html" title="trait zerovec::ule::VarULE">VarULE</a> + ?<a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, Format: <a class="trait" href="../vecs/trait.VarZeroVecFormat.html" title="trait zerovec::vecs::VarZeroVecFormat">VarZeroVecFormat</a>&gt; <a class="trait" href="trait.VarULE.html" title="trait zerovec::ule::VarULE">VarULE</a> for <a class="struct" href="tuplevar/struct.Tuple3VarULE.html" title="struct zerovec::ule::tuplevar::Tuple3VarULE">Tuple3VarULE</a>&lt;A, B, C, Format&gt;</h3></section><section id="impl-VarULE-for-Tuple2VarULE%3CA,+B,+Format%3E" class="impl"><a class="src rightside" href="../../src/zerovec/ule/tuplevar.rs.html#240">Source</a><a href="#impl-VarULE-for-Tuple2VarULE%3CA,+B,+Format%3E" class="anchor">§</a><h3 class="code-header">impl&lt;A: <a class="trait" href="trait.VarULE.html" title="trait zerovec::ule::VarULE">VarULE</a> + ?<a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, B: <a class="trait" href="trait.VarULE.html" title="trait zerovec::ule::VarULE">VarULE</a> + ?<a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>, Format: <a class="trait" href="../vecs/trait.VarZeroVecFormat.html" title="trait zerovec::vecs::VarZeroVecFormat">VarZeroVecFormat</a>&gt; <a class="trait" href="trait.VarULE.html" title="trait zerovec::ule::VarULE">VarULE</a> for <a class="struct" href="tuplevar/struct.Tuple2VarULE.html" title="struct zerovec::ule::tuplevar::Tuple2VarULE">Tuple2VarULE</a>&lt;A, B, Format&gt;</h3></section><section id="impl-VarULE-for-ZeroSlice%3CT%3E" class="impl"><a class="src rightside" href="../../src/zerovec/zerovec/slice.rs.html#501-511">Source</a><a href="#impl-VarULE-for-ZeroSlice%3CT%3E" class="anchor">§</a><h3 class="code-header">impl&lt;T: <a class="trait" href="trait.AsULE.html" title="trait zerovec::ule::AsULE">AsULE</a> + 'static&gt; <a class="trait" href="trait.VarULE.html" title="trait zerovec::ule::VarULE">VarULE</a> for <a class="struct" href="../struct.ZeroSlice.html" title="struct zerovec::ZeroSlice">ZeroSlice</a>&lt;T&gt;</h3></section><section id="impl-VarULE-for-VarZeroSlice%3CT,+F%3E" class="impl"><a class="src rightside" href="../../src/zerovec/varzerovec/slice.rs.html#444-459">Source</a><a href="#impl-VarULE-for-VarZeroSlice%3CT,+F%3E" class="anchor">§</a><h3 class="code-header">impl&lt;T: <a class="trait" href="trait.VarULE.html" title="trait zerovec::ule::VarULE">VarULE</a> + ?<a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + 'static, F: <a class="trait" href="../vecs/trait.VarZeroVecFormat.html" title="trait zerovec::vecs::VarZeroVecFormat">VarZeroVecFormat</a>&gt; <a class="trait" href="trait.VarULE.html" title="trait zerovec::ule::VarULE">VarULE</a> for <a class="struct" href="../struct.VarZeroSlice.html" title="struct zerovec::VarZeroSlice">VarZeroSlice</a>&lt;T, F&gt;</h3></section><section id="impl-VarULE-for-OptionVarULE%3CU%3E" class="impl"><a class="src rightside" href="../../src/zerovec/ule/option.rs.html#176-204">Source</a><a href="#impl-VarULE-for-OptionVarULE%3CU%3E" class="anchor">§</a><h3 class="code-header">impl&lt;U: <a class="trait" href="trait.VarULE.html" title="trait zerovec::ule::VarULE">VarULE</a> + ?<a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>&gt; <a class="trait" href="trait.VarULE.html" title="trait zerovec::ule::VarULE">VarULE</a> for <a class="struct" href="struct.OptionVarULE.html" title="struct zerovec::ule::OptionVarULE">OptionVarULE</a>&lt;U&gt;</h3></section><section id="impl-VarULE-for-MultiFieldsULE%3CLEN,+Format%3E" class="impl"><a class="src rightside" href="../../src/zerovec/ule/multi.rs.html#144-159">Source</a><a href="#impl-VarULE-for-MultiFieldsULE%3CLEN,+Format%3E" class="anchor">§</a><h3 class="code-header">impl&lt;const LEN: <a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.usize.html">usize</a>, Format: <a class="trait" href="../vecs/trait.VarZeroVecFormat.html" title="trait zerovec::vecs::VarZeroVecFormat">VarZeroVecFormat</a>&gt; <a class="trait" href="trait.VarULE.html" title="trait zerovec::ule::VarULE">VarULE</a> for <a class="struct" href="struct.MultiFieldsULE.html" title="struct zerovec::ule::MultiFieldsULE">MultiFieldsULE</a>&lt;LEN, Format&gt;</h3></section></div><script src="../../trait.impl/zerovec/ule/trait.VarULE.js" data-ignore-extern-crates="std" async></script><script type="text/json" id="notable-traits-data">{"&[u8]":"<h3>Notable traits for <code>&amp;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/1.93.1/std/primitive.u8.html\">u8</a>]</code></h3><pre><code><div class=\"where\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.93.1/std/io/trait.Read.html\" title=\"trait std::io::Read\">Read</a> for &amp;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/1.93.1/std/primitive.u8.html\">u8</a>]</div>"}</script></section></div></main></body></html>