wasmer/rustdoc/cranelift_entity/struct.EntityList.html
2019-09-16 15:54:50 -07:00

90 lines
42 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 `EntityList` struct in crate `cranelift_entity`."><meta name="keywords" content="rust, rustlang, rust-lang, EntityList"><title>cranelift_entity::EntityList - 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='../cranelift_entity/index.html'><div class='logo-container'><img src='../rust-logo.png' alt='logo'></div></a><p class='location'>Struct EntityList</p><div class="sidebar-elems"><div class="block items"><a class="sidebar-title" href="#methods">Methods</a><div class="sidebar-links"><a href="#method.as_mut_slice">as_mut_slice</a><a href="#method.as_slice">as_slice</a><a href="#method.clear">clear</a><a href="#method.extend">extend</a><a href="#method.first">first</a><a href="#method.from_slice">from_slice</a><a href="#method.get">get</a><a href="#method.get_mut">get_mut</a><a href="#method.grow_at">grow_at</a><a href="#method.insert">insert</a><a href="#method.is_empty">is_empty</a><a href="#method.is_valid">is_valid</a><a href="#method.len">len</a><a href="#method.new">new</a><a href="#method.push">push</a><a href="#method.remove">remove</a><a href="#method.swap_remove">swap_remove</a><a href="#method.take">take</a></div><a class="sidebar-title" href="#implementations">Trait Implementations</a><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a><a href="#impl-Default">Default</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-ToOwned">ToOwned</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'>cranelift_entity</a></p><script>window.sidebarCurrent = {name: 'EntityList', 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 js-only"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" 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/cranelift_entity/list.rs.html#63-66' title='goto source code'>[src]</a></span><span class='in-band'>Struct <a href='index.html'>cranelift_entity</a>::<wbr><a class="struct" href=''>EntityList</a></span></h1><div class="docblock type-decl hidden-by-usual-hider"><pre class='rust struct'>pub struct EntityList&lt;T:&nbsp;<a class="trait" href="../cranelift_entity/trait.EntityRef.html" title="trait cranelift_entity::EntityRef">EntityRef</a> + <a class="trait" href="../cranelift_entity/packed_option/trait.ReservedValue.html" title="trait cranelift_entity::packed_option::ReservedValue">ReservedValue</a>&gt; { /* fields omitted */ }</pre></div><div class='docblock'><p>A small list of entity references allocated from a pool.</p>
<p>An <code>EntityList&lt;T&gt;</code> type provides similar functionality to <code>Vec&lt;T&gt;</code>, but with some important
differences in the implementation:</p>
<ol>
<li>Memory is allocated from a <code>ListPool&lt;T&gt;</code> instead of the global heap.</li>
<li>The footprint of an entity list is 4 bytes, compared with the 24 bytes for <code>Vec&lt;T&gt;</code>.</li>
<li>An entity list doesn't implement <code>Drop</code>, leaving it to the pool to manage memory.</li>
</ol>
<p>The list pool is intended to be used as a LIFO allocator. After building up a larger data
structure with many list references, the whole thing can be discarded quickly by clearing the
pool.</p>
<h1 id="safety" class="section-header"><a href="#safety">Safety</a></h1>
<p>Entity lists are not as safe to use as <code>Vec&lt;T&gt;</code>, but they never jeopardize Rust's memory safety
guarantees. These are the problems to be aware of:</p>
<ul>
<li>If you lose track of an entity list, its memory won't be recycled until the pool is cleared.
This can cause the pool to grow very large with leaked lists.</li>
<li>If entity lists are used after their pool is cleared, they may contain garbage data, and
modifying them may corrupt other lists in the pool.</li>
<li>If an entity list is used with two different pool instances, both pools are likely to become
corrupted.</li>
</ul>
<p>Entity lists can be cloned, but that operation should only be used as part of cloning the whole
function they belong to. <em>Cloning an entity list does not allocate new memory for the clone</em>.
It creates an alias of the same memory.</p>
<p>Entity lists cannot be hashed and compared for equality because it's not possible to compare the
contents of the list without the pool reference.</p>
<h1 id="implementation" class="section-header"><a href="#implementation">Implementation</a></h1>
<p>The <code>EntityList</code> itself is designed to have the smallest possible footprint. This is important
because it is used inside very compact data structures like <code>InstructionData</code>. The list
contains only a 32-bit index into the pool's memory vector, pointing to the first element of
the list.</p>
<p>The pool is just a single <code>Vec&lt;T&gt;</code> containing all of the allocated lists. Each list is
represented as three contiguous parts:</p>
<ol>
<li>The number of elements in the list.</li>
<li>The list elements.</li>
<li>Excess capacity elements.</li>
</ol>
<p>The total size of the three parts is always a power of two, and the excess capacity is always
as small as possible. This means that shrinking a list may cause the excess capacity to shrink
if a smaller power-of-two size becomes available.</p>
<p>Both growing and shrinking a list may cause it to be reallocated in the pool vector.</p>
<p>The index stored in an <code>EntityList</code> points to part 2, the list elements. The value 0 is
reserved for the empty list which isn't allocated in the vector.</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&lt;T:&nbsp;<a class="trait" href="../cranelift_entity/trait.EntityRef.html" title="trait cranelift_entity::EntityRef">EntityRef</a> + <a class="trait" href="../cranelift_entity/packed_option/trait.ReservedValue.html" title="trait cranelift_entity::packed_option::ReservedValue">ReservedValue</a>&gt; <a class="struct" href="../cranelift_entity/struct.EntityList.html" title="struct cranelift_entity::EntityList">EntityList</a>&lt;T&gt;</code><a href='#impl' class='anchor'></a><a class='srclink' href='../src/cranelift_entity/list.rs.html#223-481' title='goto source code'>[src]</a></h3><div class='impl-items'><h4 id='method.new' class="method"><code id='new.v'>pub fn <a href='#method.new' class='fnname'>new</a>() -&gt; Self</code><a class='srclink' href='../src/cranelift_entity/list.rs.html#225-227' title='goto source code'>[src]</a></h4><div class='docblock'><p>Create a new empty list.</p>
</div><h4 id='method.from_slice' class="method"><code id='from_slice.v'>pub fn <a href='#method.from_slice' class='fnname'>from_slice</a>(slice: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&amp;[T]</a>, pool: &amp;mut <a class="struct" href="../cranelift_entity/struct.ListPool.html" title="struct cranelift_entity::ListPool">ListPool</a>&lt;T&gt;) -&gt; Self</code><a class='srclink' href='../src/cranelift_entity/list.rs.html#230-244' title='goto source code'>[src]</a></h4><div class='docblock'><p>Create a new list with the contents initialized from a slice.</p>
</div><h4 id='method.is_empty' class="method"><code id='is_empty.v'>pub fn <a href='#method.is_empty' class='fnname'>is_empty</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/cranelift_entity/list.rs.html#247-251' title='goto source code'>[src]</a></h4><div class='docblock'><p>Returns <code>true</code> if the list has a length of 0.</p>
</div><h4 id='method.len' class="method"><code id='len.v'>pub fn <a href='#method.len' class='fnname'>len</a>(&amp;self, pool: &amp;<a class="struct" href="../cranelift_entity/struct.ListPool.html" title="struct cranelift_entity::ListPool">ListPool</a>&lt;T&gt;) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code><a class='srclink' href='../src/cranelift_entity/list.rs.html#254-257' title='goto source code'>[src]</a></h4><div class='docblock'><p>Get the number of elements in the list.</p>
</div><h4 id='method.is_valid' class="method"><code id='is_valid.v'>pub fn <a href='#method.is_valid' class='fnname'>is_valid</a>(&amp;self, pool: &amp;<a class="struct" href="../cranelift_entity/struct.ListPool.html" title="struct cranelift_entity::ListPool">ListPool</a>&lt;T&gt;) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code><a class='srclink' href='../src/cranelift_entity/list.rs.html#260-263' title='goto source code'>[src]</a></h4><div class='docblock'><p>Returns <code>true</code> if the list is valid</p>
</div><h4 id='method.as_slice' class="method"><code id='as_slice.v'>pub fn <a href='#method.as_slice' class='fnname'>as_slice</a>&lt;'a&gt;(&amp;'a self, pool: &amp;'a <a class="struct" href="../cranelift_entity/struct.ListPool.html" title="struct cranelift_entity::ListPool">ListPool</a>&lt;T&gt;) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&amp;'a [T]</a></code><a class='srclink' href='../src/cranelift_entity/list.rs.html#266-272' title='goto source code'>[src]</a></h4><div class='docblock'><p>Get the list as a slice.</p>
</div><h4 id='method.get' class="method"><code id='get.v'>pub fn <a href='#method.get' class='fnname'>get</a>(&amp;self, index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, pool: &amp;<a class="struct" href="../cranelift_entity/struct.ListPool.html" title="struct cranelift_entity::ListPool">ListPool</a>&lt;T&gt;) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;T&gt;</code><a class='srclink' href='../src/cranelift_entity/list.rs.html#275-277' title='goto source code'>[src]</a></h4><div class='docblock'><p>Get a single element from the list.</p>
</div><h4 id='method.first' class="method"><code id='first.v'>pub fn <a href='#method.first' class='fnname'>first</a>(&amp;self, pool: &amp;<a class="struct" href="../cranelift_entity/struct.ListPool.html" title="struct cranelift_entity::ListPool">ListPool</a>&lt;T&gt;) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;T&gt;</code><a class='srclink' href='../src/cranelift_entity/list.rs.html#280-286' title='goto source code'>[src]</a></h4><div class='docblock'><p>Get the first element from the list.</p>
</div><h4 id='method.as_mut_slice' class="method"><code id='as_mut_slice.v'>pub fn <a href='#method.as_mut_slice' class='fnname'>as_mut_slice</a>&lt;'a&gt;(&amp;'a mut self, pool: &amp;'a mut <a class="struct" href="../cranelift_entity/struct.ListPool.html" title="struct cranelift_entity::ListPool">ListPool</a>&lt;T&gt;) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&amp;'a mut [T]</a></code><a class='srclink' href='../src/cranelift_entity/list.rs.html#289-295' title='goto source code'>[src]</a></h4><div class='docblock'><p>Get the list as a mutable slice.</p>
</div><h4 id='method.get_mut' class="method"><code id='get_mut.v'>pub fn <a href='#method.get_mut' class='fnname'>get_mut</a>&lt;'a&gt;(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;'a mut self, <br>&nbsp;&nbsp;&nbsp;&nbsp;index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;pool: &amp;'a mut <a class="struct" href="../cranelift_entity/struct.ListPool.html" title="struct cranelift_entity::ListPool">ListPool</a>&lt;T&gt;<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.reference.html">&amp;'a mut </a>T&gt;</code><a class='srclink' href='../src/cranelift_entity/list.rs.html#298-300' title='goto source code'>[src]</a></h4><div class='docblock'><p>Get a mutable reference to a single element from the list.</p>
</div><h4 id='method.clear' class="method"><code id='clear.v'>pub fn <a href='#method.clear' class='fnname'>clear</a>(&amp;mut self, pool: &amp;mut <a class="struct" href="../cranelift_entity/struct.ListPool.html" title="struct cranelift_entity::ListPool">ListPool</a>&lt;T&gt;)</code><a class='srclink' href='../src/cranelift_entity/list.rs.html#305-313' title='goto source code'>[src]</a></h4><div class='docblock'><p>Removes all elements from the list.</p>
<p>The memory used by the list is put back in the pool.</p>
</div><h4 id='method.take' class="method"><code id='take.v'>pub fn <a href='#method.take' class='fnname'>take</a>(&amp;mut self) -&gt; Self</code><a class='srclink' href='../src/cranelift_entity/list.rs.html#318-320' title='goto source code'>[src]</a></h4><div class='docblock'><p>Take all elements from this list and return them as a new list. Leave this list empty.</p>
<p>This is the equivalent of <code>Option::take()</code>.</p>
</div><h4 id='method.push' class="method"><code id='push.v'>pub fn <a href='#method.push' class='fnname'>push</a>(&amp;mut self, element: T, pool: &amp;mut <a class="struct" href="../cranelift_entity/struct.ListPool.html" title="struct cranelift_entity::ListPool">ListPool</a>&lt;T&gt;) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code><a class='srclink' href='../src/cranelift_entity/list.rs.html#324-353' title='goto source code'>[src]</a></h4><div class='docblock'><p>Appends an element to the back of the list.
Returns the index where the element was inserted.</p>
</div><h4 id='method.extend' class="method"><code id='extend.v'>pub fn <a href='#method.extend' class='fnname'>extend</a>&lt;I&gt;(&amp;mut self, elements: I, pool: &amp;mut <a class="struct" href="../cranelift_entity/struct.ListPool.html" title="struct cranelift_entity::ListPool">ListPool</a>&lt;T&gt;) <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&lt;Item = T&gt;,&nbsp;</span></code><a class='srclink' href='../src/cranelift_entity/list.rs.html#391-399' title='goto source code'>[src]</a></h4><div class='docblock'><p>Appends multiple elements to the back of the list.</p>
</div><h4 id='method.insert' class="method"><code id='insert.v'>pub fn <a href='#method.insert' class='fnname'>insert</a>(&amp;mut self, index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, element: T, pool: &amp;mut <a class="struct" href="../cranelift_entity/struct.ListPool.html" title="struct cranelift_entity::ListPool">ListPool</a>&lt;T&gt;)</code><a class='srclink' href='../src/cranelift_entity/list.rs.html#403-418' title='goto source code'>[src]</a></h4><div class='docblock'><p>Inserts an element as position <code>index</code> in the list, shifting all elements after it to the
right.</p>
</div><h4 id='method.remove' class="method"><code id='remove.v'>pub fn <a href='#method.remove' class='fnname'>remove</a>(&amp;mut self, index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, pool: &amp;mut <a class="struct" href="../cranelift_entity/struct.ListPool.html" title="struct cranelift_entity::ListPool">ListPool</a>&lt;T&gt;)</code><a class='srclink' href='../src/cranelift_entity/list.rs.html#421-450' title='goto source code'>[src]</a></h4><div class='docblock'><p>Removes the element at position <code>index</code> from the list. Potentially linear complexity.</p>
</div><h4 id='method.swap_remove' class="method"><code id='swap_remove.v'>pub fn <a href='#method.swap_remove' class='fnname'>swap_remove</a>(&amp;mut self, index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, pool: &amp;mut <a class="struct" href="../cranelift_entity/struct.ListPool.html" title="struct cranelift_entity::ListPool">ListPool</a>&lt;T&gt;)</code><a class='srclink' href='../src/cranelift_entity/list.rs.html#454-466' title='goto source code'>[src]</a></h4><div class='docblock'><p>Removes the element at <code>index</code> in constant time by switching it with the last element of
the list.</p>
</div><h4 id='method.grow_at' class="method"><code id='grow_at.v'>pub fn <a href='#method.grow_at' class='fnname'>grow_at</a>(&amp;mut self, index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, count: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, pool: &amp;mut <a class="struct" href="../cranelift_entity/struct.ListPool.html" title="struct cranelift_entity::ListPool">ListPool</a>&lt;T&gt;)</code><a class='srclink' href='../src/cranelift_entity/list.rs.html#473-480' title='goto source code'>[src]</a></h4><div class='docblock'><p>Grow the list by inserting <code>count</code> elements at <code>index</code>.</p>
<p>The new elements are not initialized, they will contain whatever happened to be in memory.
Since the memory comes from the pool, this will be either zero entity references or
whatever where in a previously deallocated list.</p>
</div></div><h2 id='implementations' class='small-section-header'>Trait Implementations<a href='#implementations' class='anchor'></a></h2><div id='implementations-list'><h3 id='impl-Debug' class='impl'><code class='in-band'>impl&lt;T:&nbsp;<a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> + <a class="trait" href="../cranelift_entity/trait.EntityRef.html" title="trait cranelift_entity::EntityRef">EntityRef</a> + <a class="trait" href="../cranelift_entity/packed_option/trait.ReservedValue.html" title="trait cranelift_entity::packed_option::ReservedValue">ReservedValue</a>&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="../cranelift_entity/struct.EntityList.html" title="struct cranelift_entity::EntityList">EntityList</a>&lt;T&gt;</code><a href='#impl-Debug' class='anchor'></a><a class='srclink' href='../src/cranelift_entity/list.rs.html#62' title='goto source code'>[src]</a></h3><div class='impl-items'><h4 id='method.fmt' class="method hidden"><code id='fmt.v'>fn <a href='https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt' class='fnname'>fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></code><a class='srclink' href='../src/cranelift_entity/list.rs.html#62' title='goto source code'>[src]</a></h4><div class='docblock hidden'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
</div></div><h3 id='impl-Clone' class='impl'><code class='in-band'>impl&lt;T:&nbsp;<a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + <a class="trait" href="../cranelift_entity/trait.EntityRef.html" title="trait cranelift_entity::EntityRef">EntityRef</a> + <a class="trait" href="../cranelift_entity/packed_option/trait.ReservedValue.html" title="trait cranelift_entity::packed_option::ReservedValue">ReservedValue</a>&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="../cranelift_entity/struct.EntityList.html" title="struct cranelift_entity::EntityList">EntityList</a>&lt;T&gt;</code><a href='#impl-Clone' class='anchor'></a><a class='srclink' href='../src/cranelift_entity/list.rs.html#62' title='goto source code'>[src]</a></h3><div class='impl-items'><h4 id='method.clone' class="method hidden"><code id='clone.v'>fn <a href='https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone' class='fnname'>clone</a>(&amp;self) -&gt; <a class="struct" href="../cranelift_entity/struct.EntityList.html" title="struct cranelift_entity::EntityList">EntityList</a>&lt;T&gt;</code><a class='srclink' href='../src/cranelift_entity/list.rs.html#62' title='goto source code'>[src]</a></h4><div class='docblock hidden'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
</div><h4 id='method.clone_from' class="method hidden"><code id='clone_from.v'>fn <a href='https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from' class='fnname'>clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;</a>Self)</code><span class='since' title='Stable since Rust version 1.0.0'>1.0.0</span><a class='srclink' href='https://doc.rust-lang.org/nightly/src/core/clone.rs.html#131-133' title='goto source code'>[src]</a></h4><div class='docblock hidden'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
</div></div><h3 id='impl-Default' class='impl'><code class='in-band'>impl&lt;T:&nbsp;<a class="trait" href="../cranelift_entity/trait.EntityRef.html" title="trait cranelift_entity::EntityRef">EntityRef</a> + <a class="trait" href="../cranelift_entity/packed_option/trait.ReservedValue.html" title="trait cranelift_entity::packed_option::ReservedValue">ReservedValue</a>&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="../cranelift_entity/struct.EntityList.html" title="struct cranelift_entity::EntityList">EntityList</a>&lt;T&gt;</code><a href='#impl-Default' class='anchor'></a><a class='srclink' href='../src/cranelift_entity/list.rs.html#69-76' title='goto source code'>[src]</a></h3><div class='docblock'><p>Create an empty list.</p>
</div><div class='impl-items'><h4 id='method.default' class="method hidden"><code id='default.v'>fn <a href='https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default' class='fnname'>default</a>() -&gt; Self</code><a class='srclink' href='../src/cranelift_entity/list.rs.html#70-75' title='goto source code'>[src]</a></h4><div class='docblock hidden'><p>Returns the &quot;default value&quot; for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></p>
</div></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-Send' class='impl'><code class='in-band'>impl&lt;T&gt; <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="../cranelift_entity/struct.EntityList.html" title="struct cranelift_entity::EntityList">EntityList</a>&lt;T&gt; <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.Send.html" title="trait core::marker::Send">Send</a>,&nbsp;</span></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&lt;T&gt; <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="../cranelift_entity/struct.EntityList.html" title="struct cranelift_entity::EntityList">EntityList</a>&lt;T&gt; <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.Sync.html" title="trait core::marker::Sync">Sync</a>,&nbsp;</span></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&lt;T&gt; <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="../cranelift_entity/struct.EntityList.html" title="struct cranelift_entity::EntityList">EntityList</a>&lt;T&gt; <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.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,&nbsp;</span></code><a href='#impl-Unpin' class='anchor'></a></h3><div class='impl-items'></div><h3 id='impl-RefUnwindSafe' class='impl'><code class='in-band'>impl&lt;T&gt; <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="../cranelift_entity/struct.EntityList.html" title="struct cranelift_entity::EntityList">EntityList</a>&lt;T&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="https://doc.rust-lang.org/nightly/std/panic/trait.RefUnwindSafe.html" title="trait std::panic::RefUnwindSafe">RefUnwindSafe</a>,&nbsp;</span></code><a href='#impl-RefUnwindSafe' class='anchor'></a></h3><div class='impl-items'></div><h3 id='impl-UnwindSafe' class='impl'><code class='in-band'>impl&lt;T&gt; <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="../cranelift_entity/struct.EntityList.html" title="struct cranelift_entity::EntityList">EntityList</a>&lt;T&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="https://doc.rust-lang.org/nightly/std/panic/trait.UnwindSafe.html" title="trait std::panic::UnwindSafe">UnwindSafe</a>,&nbsp;</span></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-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.rs.html#552-554' 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.rs.html#553' 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.rs.html#571-577' 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.rs.html#574-576' 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.rs.html#543-548' 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.rs.html#545-547' 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.rs.html#559-566' 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.rs.html#563-565' title='goto source code'>[src]</a></h4><div class='docblock hidden'><p>Performs the conversion.</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-215' 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' 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#218-220' 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#219' 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-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#100-102' 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#101' 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-ToOwned' class='impl'><code class='in-band'>impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> 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/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,&nbsp;</span></code><a href='#impl-ToOwned' class='anchor'></a><a class='srclink' href='https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#81-92' title='goto source code'>[src]</a></h3><div class='impl-items'><h4 id='associatedtype.Owned' class="type"><code id='Owned.t'>type <a href='https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned' class="type">Owned</a> = T</code></h4><div class='docblock'><p>The resulting type after obtaining ownership.</p>
</div><h4 id='method.to_owned' class="method hidden"><code id='to_owned.v'>fn <a href='https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned' class='fnname'>to_owned</a>(&amp;self) -&gt; T</code><a class='srclink' href='https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#85-87' title='goto source code'>[src]</a></h4><div class='docblock hidden'><p>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></p>
</div><h4 id='method.clone_into' class="method hidden"><code id='clone_into.v'>fn <a href='https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into' class='fnname'>clone_into</a>(&amp;self, target: <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/alloc/borrow.rs.html#89-91' title='goto source code'>[src]</a></h4><div class='stability hidden'><div class='stab unstable'><details><summary><span class='emoji'>🔬</span> This is a nightly-only experimental API. (<code>toowned_clone_into</code>)</summary><p>recently added</p>
</details></div></div><div class='docblock hidden'><p>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></p>
</div></div></div></section><section id="search" class="content hidden"></section><section class="footer"></section><aside id="help" class="hidden"><div><h1 class="hidden">Help</h1><div class="shortcuts"><h2>Keyboard Shortcuts</h2><dl><dt><kbd>?</kbd></dt><dd>Show this help dialog</dd><dt><kbd>S</kbd></dt><dd>Focus the search field</dd><dt><kbd></kbd></dt><dd>Move up in search results</dd><dt><kbd></kbd></dt><dd>Move down in search results</dd><dt><kbd></kbd></dt><dd>Switch tab</dd><dt><kbd>&#9166;</kbd></dt><dd>Go to active search result</dd><dt><kbd>+</kbd></dt><dd>Expand all sections</dd><dt><kbd>-</kbd></dt><dd>Collapse all sections</dd></dl></div><div class="infos"><h2>Search Tricks</h2><p>Prefix searches with a type followed by a colon (e.g., <code>fn:</code>) to restrict the search to a given type.</p><p>Accepted types are: <code>fn</code>, <code>mod</code>, <code>struct</code>, <code>enum</code>, <code>trait</code>, <code>type</code>, <code>macro</code>, and <code>const</code>.</p><p>Search functions by type signature (e.g., <code>vec -> usize</code> or <code>* -> vec</code>)</p><p>Search multiple things at once by splitting your query with comma (e.g., <code>str,u8</code> or <code>String,struct:Vec,test</code>)</p></div></div></aside><script>window.rootPath = "../";window.currentCrate = "cranelift_entity";</script><script src="../aliases.js"></script><script src="../main.js"></script><script defer src="../search-index.js"></script></body></html>