Files
phy/slotmap/struct.SecondaryMap.html
Orion Kindel 0ce894e6b0 doc
2025-03-18 10:30:23 -05:00

352 lines
103 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="Secondary map, associate data with previously stored elements in a slot map."><title>SecondaryMap in slotmap - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Regular-0fe48ade.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" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../static.files/rustdoc-42caa33d.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="slotmap" data-themes="" data-resource-suffix="" data-rustdoc-version="1.84.0 (9fc6b4312 2025-01-07)" data-channel="1.84.0" data-search-js="search-92e6798f.js" data-settings-js="settings-0f613d39.js" ><script src="../static.files/storage-59e33391.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-5f194d8c.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-893ab5e7.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-6580c154.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-044be391.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../slotmap/index.html">slotmap</a><span class="version">1.0.7</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Secondary<wbr>Map</a></h2><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.capacity" title="capacity">capacity</a></li><li><a href="#method.clear" title="clear">clear</a></li><li><a href="#method.contains_key" title="contains_key">contains_key</a></li><li><a href="#method.drain" title="drain">drain</a></li><li><a href="#method.entry" title="entry">entry</a></li><li><a href="#method.get" title="get">get</a></li><li><a href="#method.get_disjoint_mut" title="get_disjoint_mut">get_disjoint_mut</a></li><li><a href="#method.get_disjoint_unchecked_mut" title="get_disjoint_unchecked_mut">get_disjoint_unchecked_mut</a></li><li><a href="#method.get_mut" title="get_mut">get_mut</a></li><li><a href="#method.get_unchecked" title="get_unchecked">get_unchecked</a></li><li><a href="#method.get_unchecked_mut" title="get_unchecked_mut">get_unchecked_mut</a></li><li><a href="#method.insert" title="insert">insert</a></li><li><a href="#method.is_empty" title="is_empty">is_empty</a></li><li><a href="#method.iter" title="iter">iter</a></li><li><a href="#method.iter_mut" title="iter_mut">iter_mut</a></li><li><a href="#method.keys" title="keys">keys</a></li><li><a href="#method.len" title="len">len</a></li><li><a href="#method.new" title="new">new</a></li><li><a href="#method.remove" title="remove">remove</a></li><li><a href="#method.retain" title="retain">retain</a></li><li><a href="#method.set_capacity" title="set_capacity">set_capacity</a></li><li><a href="#method.values" title="values">values</a></li><li><a href="#method.values_mut" title="values_mut">values_mut</a></li><li><a href="#method.with_capacity" title="with_capacity">with_capacity</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-SecondaryMap%3CK,+V%3E" title="Clone">Clone</a></li><li><a href="#impl-Debug-for-SecondaryMap%3CK,+V%3E" title="Debug">Debug</a></li><li><a href="#impl-Default-for-SecondaryMap%3CK,+V%3E" title="Default">Default</a></li><li><a href="#impl-Eq-for-SecondaryMap%3CK,+V%3E" title="Eq">Eq</a></li><li><a href="#impl-Extend%3C(K,+%26V)%3E-for-SecondaryMap%3CK,+V%3E" title="Extend&#60;(K, &#38;&#39;a V)&#62;">Extend&#60;(K, &#38;&#39;a V)&#62;</a></li><li><a href="#impl-Extend%3C(K,+V)%3E-for-SecondaryMap%3CK,+V%3E" title="Extend&#60;(K, V)&#62;">Extend&#60;(K, V)&#62;</a></li><li><a href="#impl-FromIterator%3C(K,+V)%3E-for-SecondaryMap%3CK,+V%3E" title="FromIterator&#60;(K, V)&#62;">FromIterator&#60;(K, V)&#62;</a></li><li><a href="#impl-Index%3CK%3E-for-SecondaryMap%3CK,+V%3E" title="Index&#60;K&#62;">Index&#60;K&#62;</a></li><li><a href="#impl-IndexMut%3CK%3E-for-SecondaryMap%3CK,+V%3E" title="IndexMut&#60;K&#62;">IndexMut&#60;K&#62;</a></li><li><a href="#impl-IntoIterator-for-%26SecondaryMap%3CK,+V%3E" title="IntoIterator">IntoIterator</a></li><li><a href="#impl-IntoIterator-for-%26mut+SecondaryMap%3CK,+V%3E" title="IntoIterator">IntoIterator</a></li><li><a href="#impl-IntoIterator-for-SecondaryMap%3CK,+V%3E" title="IntoIterator">IntoIterator</a></li><li><a href="#impl-PartialEq-for-SecondaryMap%3CK,+V%3E" title="PartialEq">PartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-SecondaryMap%3CK,+V%3E" title="Freeze">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-SecondaryMap%3CK,+V%3E" title="RefUnwindSafe">RefUnwindSafe</a></li><li><a href="#impl-Send-for-SecondaryMap%3CK,+V%3E" title="Send">Send</a></li><li><a href="#impl-Sync-for-SecondaryMap%3CK,+V%3E" title="Sync">Sync</a></li><li><a href="#impl-Unpin-for-SecondaryMap%3CK,+V%3E" title="Unpin">Unpin</a></li><li><a href="#impl-UnwindSafe-for-SecondaryMap%3CK,+V%3E" title="UnwindSafe">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T" title="Any">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T" title="Borrow&#60;T&#62;">Borrow&#60;T&#62;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T" title="BorrowMut&#60;T&#62;">BorrowMut&#60;T&#62;</a></li><li><a href="#impl-CloneToUninit-for-T" title="CloneToUninit">CloneToUninit</a></li><li><a href="#impl-From%3CT%3E-for-T" title="From&#60;T&#62;">From&#60;T&#62;</a></li><li><a href="#impl-Into%3CU%3E-for-T" title="Into&#60;U&#62;">Into&#60;U&#62;</a></li><li><a href="#impl-ToOwned-for-T" title="ToOwned">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T" title="TryFrom&#60;U&#62;">TryFrom&#60;U&#62;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T" title="TryInto&#60;U&#62;">TryInto&#60;U&#62;</a></li></ul></section><div id="rustdoc-modnav"><h2 class="in-crate"><a href="index.html">In crate slotmap</a></h2></div></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><rustdoc-search></rustdoc-search><section id="main-content" class="content"><div class="main-heading"><span class="rustdoc-breadcrumbs"><a href="index.html">slotmap</a></span><h1>Struct <span class="struct">SecondaryMap</span><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/slotmap/secondary.rs.html#122-126">Source</a> </span></div><pre class="rust item-decl"><code>pub struct SecondaryMap&lt;K: <a class="trait" href="trait.Key.html" title="trait slotmap::Key">Key</a>, V&gt; { <span class="comment">/* private fields */</span> }</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Secondary map, associate data with previously stored elements in a slot map.</p>
<p>A <a href="struct.SecondaryMap.html" title="struct slotmap::SecondaryMap"><code>SecondaryMap</code></a> allows you to efficiently store additional information
for each element in a slot map. You can have multiple secondary maps per
slot map, but not multiple slot maps per secondary map. It is safe but
unspecified behavior if you use keys from multiple different slot maps in
the same <a href="struct.SecondaryMap.html" title="struct slotmap::SecondaryMap"><code>SecondaryMap</code></a>.</p>
<p>A <a href="struct.SecondaryMap.html" title="struct slotmap::SecondaryMap"><code>SecondaryMap</code></a> does not leak memory even if you never remove elements.
In return, when you remove a key from the primary slot map, after any insert
the space associated with the removed element may be reclaimed. Dont expect
the values associated with a removed key to stick around after an insertion
has happened!</p>
<p>Finally a note on memory complexity, the <a href="struct.SecondaryMap.html" title="struct slotmap::SecondaryMap"><code>SecondaryMap</code></a> can use memory for
each slot in the primary slot map, and has to iterate over every slot during
iteration, regardless of whether you have inserted an associative value at
that key or not. If you have some property that you only expect to set for a
minority of keys, use a <a href="struct.SparseSecondaryMap.html" title="struct slotmap::SparseSecondaryMap"><code>SparseSecondaryMap</code></a>,
which is backed by a <a href="https://doc.rust-lang.org/1.84.0/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap"><code>HashMap</code></a>.</p>
<p>Example usage:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>players = SlotMap::new();
<span class="kw">let </span><span class="kw-2">mut </span>health = SecondaryMap::new();
<span class="kw">let </span><span class="kw-2">mut </span>ammo = SecondaryMap::new();
<span class="kw">let </span>alice = players.insert(<span class="string">"alice"</span>);
<span class="kw">let </span>bob = players.insert(<span class="string">"bob"</span>);
<span class="kw">for </span>p <span class="kw">in </span>players.keys() {
health.insert(p, <span class="number">100</span>);
ammo.insert(p, <span class="number">30</span>);
}
<span class="comment">// Alice attacks Bob with all her ammo!
</span>health[bob] -= ammo[alice] * <span class="number">3</span>;
ammo[alice] = <span class="number">0</span>;</code></pre></div>
</div></details><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-SecondaryMap%3CK,+V%3E" class="impl"><a class="src rightside" href="../src/slotmap/secondary.rs.html#128-852">Source</a><a href="#impl-SecondaryMap%3CK,+V%3E" class="anchor">§</a><h3 class="code-header">impl&lt;K: <a class="trait" href="trait.Key.html" title="trait slotmap::Key">Key</a>, V&gt; <a class="struct" href="struct.SecondaryMap.html" title="struct slotmap::SecondaryMap">SecondaryMap</a>&lt;K, V&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.new" class="method"><a class="src rightside" href="../src/slotmap/secondary.rs.html#137-139">Source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a>() -&gt; Self</h4></section></summary><div class="docblock"><p>Constructs a new, empty <a href="struct.SecondaryMap.html" title="struct slotmap::SecondaryMap"><code>SecondaryMap</code></a>.</p>
<h5 id="examples"><a class="doc-anchor" href="#examples">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sec: SecondaryMap&lt;DefaultKey, i32&gt; = SecondaryMap::new();</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.with_capacity" class="method"><a class="src rightside" href="../src/slotmap/secondary.rs.html#155-163">Source</a><h4 class="code-header">pub fn <a href="#method.with_capacity" class="fn">with_capacity</a>(capacity: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.usize.html">usize</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Creates an empty <a href="struct.SecondaryMap.html" title="struct slotmap::SecondaryMap"><code>SecondaryMap</code></a> with the given capacity of slots.</p>
<p>The secondary map will not reallocate until it holds at least <code>capacity</code>
slots. Even inserting a single key-value pair might require as many
slots as the slot map the key comes from, so its recommended to match
the capacity of a secondary map to its corresponding slot map.</p>
<h5 id="examples-1"><a class="doc-anchor" href="#examples-1">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sm: SlotMap&lt;<span class="kw">_</span>, i32&gt; = SlotMap::with_capacity(<span class="number">10</span>);
<span class="kw">let </span><span class="kw-2">mut </span>sec: SecondaryMap&lt;DefaultKey, i32&gt; = SecondaryMap::with_capacity(sm.capacity());</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.len" class="method"><a class="src rightside" href="../src/slotmap/secondary.rs.html#178-180">Source</a><h4 class="code-header">pub fn <a href="#method.len" class="fn">len</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the number of elements in the secondary map.</p>
<h5 id="examples-2"><a class="doc-anchor" href="#examples-2">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sm = SlotMap::new();
<span class="kw">let </span>k = sm.insert(<span class="number">4</span>);
<span class="kw">let </span><span class="kw-2">mut </span>squared = SecondaryMap::new();
<span class="macro">assert_eq!</span>(squared.len(), <span class="number">0</span>);
squared.insert(k, <span class="number">16</span>);
<span class="macro">assert_eq!</span>(squared.len(), <span class="number">1</span>);</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.is_empty" class="method"><a class="src rightside" href="../src/slotmap/secondary.rs.html#191-193">Source</a><h4 class="code-header">pub fn <a href="#method.is_empty" class="fn">is_empty</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns if the secondary map is empty.</p>
<h5 id="examples-3"><a class="doc-anchor" href="#examples-3">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sec: SecondaryMap&lt;DefaultKey, i32&gt; = SecondaryMap::new();
<span class="macro">assert!</span>(sec.is_empty());</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.capacity" class="method"><a class="src rightside" href="../src/slotmap/secondary.rs.html#205-207">Source</a><h4 class="code-header">pub fn <a href="#method.capacity" class="fn">capacity</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the number of elements the <a href="struct.SecondaryMap.html" title="struct slotmap::SecondaryMap"><code>SecondaryMap</code></a> can hold without
reallocating.</p>
<h5 id="examples-4"><a class="doc-anchor" href="#examples-4">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sec: SecondaryMap&lt;DefaultKey, i32&gt; = SecondaryMap::with_capacity(<span class="number">10</span>);
<span class="macro">assert!</span>(sec.capacity() &gt;= <span class="number">10</span>);</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.set_capacity" class="method"><a class="src rightside" href="../src/slotmap/secondary.rs.html#230-236">Source</a><h4 class="code-header">pub fn <a href="#method.set_capacity" class="fn">set_capacity</a>(&amp;mut self, new_capacity: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.usize.html">usize</a>)</h4></section></summary><div class="docblock"><p>Sets the capacity of the <a href="struct.SecondaryMap.html" title="struct slotmap::SecondaryMap"><code>SecondaryMap</code></a> to <code>new_capacity</code>, if it is
bigger than the current capacity.</p>
<p>It is recommended to set the capacity of a <a href="struct.SecondaryMap.html" title="struct slotmap::SecondaryMap"><code>SecondaryMap</code></a> to the
capacity of its corresponding slot map before inserting many new
elements to prevent frequent reallocations. The collection may reserve
more space than requested.</p>
<h5 id="panics"><a class="doc-anchor" href="#panics">§</a>Panics</h5>
<p>Panics if the new allocation size overflows <a href="https://doc.rust-lang.org/1.84.0/std/primitive.usize.html" title="primitive usize"><code>usize</code></a>.</p>
<h5 id="examples-5"><a class="doc-anchor" href="#examples-5">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sec: SecondaryMap&lt;DefaultKey, i32&gt; = SecondaryMap::with_capacity(<span class="number">10</span>);
<span class="macro">assert!</span>(sec.capacity() &gt;= <span class="number">10</span>);
sec.set_capacity(<span class="number">1000</span>);
<span class="macro">assert!</span>(sec.capacity() &gt;= <span class="number">1000</span>);</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.contains_key" class="method"><a class="src rightside" href="../src/slotmap/secondary.rs.html#280-285">Source</a><h4 class="code-header">pub fn <a href="#method.contains_key" class="fn">contains_key</a>(&amp;self, key: K) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns <a href="https://doc.rust-lang.org/1.84.0/std/primitive.bool.html" title="primitive bool"><code>true</code></a> if the secondary map contains <code>key</code>.</p>
<h5 id="examples-6"><a class="doc-anchor" href="#examples-6">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sm = SlotMap::new();
<span class="kw">let </span>k = sm.insert(<span class="number">4</span>);
<span class="kw">let </span><span class="kw-2">mut </span>squared = SecondaryMap::new();
<span class="macro">assert!</span>(!squared.contains_key(k));
squared.insert(k, <span class="number">16</span>);
<span class="macro">assert!</span>(squared.contains_key(k));</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.insert" class="method"><a class="src rightside" href="../src/slotmap/secondary.rs.html#307-333">Source</a><h4 class="code-header">pub fn <a href="#method.insert" class="fn">insert</a>(&amp;mut self, key: K, value: V) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;V&gt;</h4></section></summary><div class="docblock"><p>Inserts a value into the secondary map at the given <code>key</code>. Can silently
fail and return <code>None</code> if <code>key</code> was removed from the originating slot
map.</p>
<p>Returns <a href="https://doc.rust-lang.org/1.84.0/core/option/enum.Option.html#variant.None" title="variant core::option::Option::None"><code>None</code></a> if this key was not present in the map, the old value
otherwise.</p>
<h5 id="examples-7"><a class="doc-anchor" href="#examples-7">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sm = SlotMap::new();
<span class="kw">let </span>k = sm.insert(<span class="number">4</span>);
<span class="kw">let </span><span class="kw-2">mut </span>squared = SecondaryMap::new();
<span class="macro">assert_eq!</span>(squared.insert(k, <span class="number">0</span>), <span class="prelude-val">None</span>);
<span class="macro">assert_eq!</span>(squared.insert(k, <span class="number">4</span>), <span class="prelude-val">Some</span>(<span class="number">0</span>));
<span class="comment">// You don't have to use insert if the key is already in the secondary map.
</span>squared[k] <span class="kw-2">*</span>= squared[k];
<span class="macro">assert_eq!</span>(squared[k], <span class="number">16</span>);</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.remove" class="method"><a class="src rightside" href="../src/slotmap/secondary.rs.html#361-371">Source</a><h4 class="code-header">pub fn <a href="#method.remove" class="fn">remove</a>(&amp;mut self, key: K) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;V&gt;</h4></section></summary><div class="docblock"><p>Removes a key from the secondary map, returning the value at the key if
the key was not previously removed. If <code>key</code> was removed from the
originating slot map, its corresponding entry in the secondary map may
or may not already be removed.</p>
<h5 id="examples-8"><a class="doc-anchor" href="#examples-8">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sm = SlotMap::new();
<span class="kw">let </span><span class="kw-2">mut </span>squared = SecondaryMap::new();
<span class="kw">let </span>k = sm.insert(<span class="number">4</span>);
squared.insert(k, <span class="number">16</span>);
squared.remove(k);
<span class="macro">assert!</span>(!squared.contains_key(k));
<span class="comment">// It's not necessary to remove keys deleted from the primary slot map, they
// get deleted automatically when their slots are reused on a subsequent insert.
</span>squared.insert(k, <span class="number">16</span>);
sm.remove(k); <span class="comment">// Remove k from the slot map, making an empty slot.
</span><span class="kw">let </span>new_k = sm.insert(<span class="number">2</span>); <span class="comment">// Since sm only has one empty slot, this reuses it.
</span><span class="macro">assert!</span>(!squared.contains_key(new_k)); <span class="comment">// Space reuse does not mean equal keys.
</span><span class="macro">assert!</span>(squared.contains_key(k)); <span class="comment">// Slot has not been reused in squared yet.
</span>squared.insert(new_k, <span class="number">4</span>);
<span class="macro">assert!</span>(!squared.contains_key(k)); <span class="comment">// Old key is no longer available.</span></code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.retain" class="method"><a class="src rightside" href="../src/slotmap/secondary.rs.html#399-412">Source</a><h4 class="code-header">pub fn <a href="#method.retain" class="fn">retain</a>&lt;F&gt;(&amp;mut self, f: F)<div class="where">where
F: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(K, <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.reference.html">&amp;mut V</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class="docblock"><p>Retains only the elements specified by the predicate.</p>
<p>In other words, remove all key-value pairs <code>(k, v)</code> such that
<code>f(k, &amp;mut v)</code> returns false. This method invalidates any removed keys.</p>
<p>This function must iterate over all slots, empty or not. In the face of
many deleted elements it can be inefficient.</p>
<h5 id="examples-9"><a class="doc-anchor" href="#examples-9">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sm = SlotMap::new();
<span class="kw">let </span><span class="kw-2">mut </span>sec = SecondaryMap::new();
<span class="kw">let </span>k1 = sm.insert(<span class="number">0</span>); sec.insert(k1, <span class="number">10</span>);
<span class="kw">let </span>k2 = sm.insert(<span class="number">1</span>); sec.insert(k2, <span class="number">11</span>);
<span class="kw">let </span>k3 = sm.insert(<span class="number">2</span>); sec.insert(k3, <span class="number">12</span>);
sec.retain(|key, val| key == k1 || <span class="kw-2">*</span>val == <span class="number">11</span>);
<span class="macro">assert!</span>(sec.contains_key(k1));
<span class="macro">assert!</span>(sec.contains_key(k2));
<span class="macro">assert!</span>(!sec.contains_key(k3));
<span class="macro">assert_eq!</span>(sec.len(), <span class="number">2</span>);</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.clear" class="method"><a class="src rightside" href="../src/slotmap/secondary.rs.html#432-434">Source</a><h4 class="code-header">pub fn <a href="#method.clear" class="fn">clear</a>(&amp;mut self)</h4></section></summary><div class="docblock"><p>Clears the secondary map. Keeps the allocated memory for reuse.</p>
<p>This function must iterate over all slots, empty or not. In the face of
many deleted elements it can be inefficient.</p>
<h5 id="examples-10"><a class="doc-anchor" href="#examples-10">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sm = SlotMap::new();
<span class="kw">let </span><span class="kw-2">mut </span>sec = SecondaryMap::new();
<span class="kw">for </span>i <span class="kw">in </span><span class="number">0</span>..<span class="number">10 </span>{
sec.insert(sm.insert(i), i);
}
<span class="macro">assert_eq!</span>(sec.len(), <span class="number">10</span>);
sec.clear();
<span class="macro">assert_eq!</span>(sec.len(), <span class="number">0</span>);</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.drain" class="method"><a class="src rightside" href="../src/slotmap/secondary.rs.html#460-462">Source</a><h4 class="code-header">pub fn <a href="#method.drain" class="fn">drain</a>(&amp;mut self) -&gt; <a class="struct" href="secondary/struct.Drain.html" title="struct slotmap::secondary::Drain">Drain</a>&lt;'_, K, V&gt; <a href="#" class="tooltip" data-notable-ty="Drain&lt;&#39;_, K, V&gt;"></a></h4></section></summary><div class="docblock"><p>Clears the slot map, returning all key-value pairs in arbitrary order as
an iterator. Keeps the allocated memory for reuse.</p>
<p>When the iterator is dropped all elements in the slot map are removed,
even if the iterator was not fully consumed. If the iterator is not
dropped (using e.g. <a href="https://doc.rust-lang.org/1.84.0/core/mem/fn.forget.html" title="fn core::mem::forget"><code>std::mem::forget</code></a>), only the elements that were
iterated over are removed.</p>
<p>This function must iterate over all slots, empty or not. In the face of
many deleted elements it can be inefficient.</p>
<h5 id="examples-11"><a class="doc-anchor" href="#examples-11">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sm = SlotMap::new();
<span class="kw">let </span>k = sm.insert(<span class="number">0</span>);
<span class="kw">let </span><span class="kw-2">mut </span>sec = SecondaryMap::new();
sec.insert(k, <span class="number">1</span>);
<span class="kw">let </span>v: Vec&lt;<span class="kw">_</span>&gt; = sec.drain().collect();
<span class="macro">assert_eq!</span>(sec.len(), <span class="number">0</span>);
<span class="macro">assert_eq!</span>(v, <span class="macro">vec!</span>[(k, <span class="number">1</span>)]);</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.get" class="method"><a class="src rightside" href="../src/slotmap/secondary.rs.html#478-484">Source</a><h4 class="code-header">pub fn <a href="#method.get" class="fn">get</a>(&amp;self, key: K) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.reference.html">&amp;V</a>&gt;</h4></section></summary><div class="docblock"><p>Returns a reference to the value corresponding to the key.</p>
<h5 id="examples-12"><a class="doc-anchor" href="#examples-12">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sm = SlotMap::new();
<span class="kw">let </span>key = sm.insert(<span class="string">"foo"</span>);
<span class="kw">let </span><span class="kw-2">mut </span>sec = SecondaryMap::new();
sec.insert(key, <span class="string">"bar"</span>);
<span class="macro">assert_eq!</span>(sec.get(key), <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span><span class="string">"bar"</span>));
sec.remove(key);
<span class="macro">assert_eq!</span>(sec.get(key), <span class="prelude-val">None</span>);</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.get_unchecked" class="method"><a class="src rightside" href="../src/slotmap/secondary.rs.html#506-510">Source</a><h4 class="code-header">pub unsafe fn <a href="#method.get_unchecked" class="fn">get_unchecked</a>(&amp;self, key: K) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.reference.html">&amp;V</a></h4></section></summary><div class="docblock"><p>Returns a reference to the value corresponding to the key without
version or bounds checking.</p>
<h5 id="safety"><a class="doc-anchor" href="#safety">§</a>Safety</h5>
<p>This should only be used if <code>contains_key(key)</code> is true. Otherwise it is
potentially unsafe.</p>
<h5 id="examples-13"><a class="doc-anchor" href="#examples-13">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sm = SlotMap::new();
<span class="kw">let </span>key = sm.insert(<span class="string">"foo"</span>);
<span class="kw">let </span><span class="kw-2">mut </span>sec = SecondaryMap::new();
sec.insert(key, <span class="string">"bar"</span>);
<span class="macro">assert_eq!</span>(<span class="kw">unsafe </span>{ sec.get_unchecked(key) }, <span class="kw-2">&amp;</span><span class="string">"bar"</span>);
sec.remove(key);
<span class="comment">// sec.get_unchecked(key) is now dangerous!</span></code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.get_mut" class="method"><a class="src rightside" href="../src/slotmap/secondary.rs.html#527-533">Source</a><h4 class="code-header">pub fn <a href="#method.get_mut" class="fn">get_mut</a>(&amp;mut self, key: K) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.reference.html">&amp;mut V</a>&gt;</h4></section></summary><div class="docblock"><p>Returns a mutable reference to the value corresponding to the key.</p>
<h5 id="examples-14"><a class="doc-anchor" href="#examples-14">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sm = SlotMap::new();
<span class="kw">let </span>key = sm.insert(<span class="string">"test"</span>);
<span class="kw">let </span><span class="kw-2">mut </span>sec = SecondaryMap::new();
sec.insert(key, <span class="number">3.5</span>);
<span class="kw">if let </span><span class="prelude-val">Some</span>(x) = sec.get_mut(key) {
<span class="kw-2">*</span>x += <span class="number">3.0</span>;
}
<span class="macro">assert_eq!</span>(sec[key], <span class="number">6.5</span>);</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.get_unchecked_mut" class="method"><a class="src rightside" href="../src/slotmap/secondary.rs.html#556-560">Source</a><h4 class="code-header">pub unsafe fn <a href="#method.get_unchecked_mut" class="fn">get_unchecked_mut</a>(&amp;mut self, key: K) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.reference.html">&amp;mut V</a></h4></section></summary><div class="docblock"><p>Returns a mutable reference to the value corresponding to the key
without version or bounds checking.</p>
<h5 id="safety-1"><a class="doc-anchor" href="#safety-1">§</a>Safety</h5>
<p>This should only be used if <code>contains_key(key)</code> is true. Otherwise it is
potentially unsafe.</p>
<h5 id="examples-15"><a class="doc-anchor" href="#examples-15">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sm = SlotMap::new();
<span class="kw">let </span>key = sm.insert(<span class="string">"foo"</span>);
<span class="kw">let </span><span class="kw-2">mut </span>sec = SecondaryMap::new();
sec.insert(key, <span class="string">"bar"</span>);
<span class="kw">unsafe </span>{ <span class="kw-2">*</span>sec.get_unchecked_mut(key) = <span class="string">"baz" </span>};
<span class="macro">assert_eq!</span>(sec[key], <span class="string">"baz"</span>);
sec.remove(key);
<span class="comment">// sec.get_unchecked_mut(key) is now dangerous!</span></code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.get_disjoint_mut" class="method"><a class="src rightside" href="../src/slotmap/secondary.rs.html#585-633">Source</a><h4 class="code-header">pub fn <a href="#method.get_disjoint_mut" class="fn">get_disjoint_mut</a>&lt;const N: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.usize.html">usize</a>&gt;(
&amp;mut self,
keys: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.array.html">[K; N]</a>,
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;[<a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.reference.html">&amp;mut V</a>; <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.array.html">N</a>]&gt;</h4></section></summary><div class="docblock"><p>Returns mutable references to the values corresponding to the given
keys. All keys must be valid and disjoint, otherwise None is returned.</p>
<p>Requires at least stable Rust version 1.51.</p>
<h5 id="examples-16"><a class="doc-anchor" href="#examples-16">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sm = SlotMap::new();
<span class="kw">let </span><span class="kw-2">mut </span>sec = SecondaryMap::new();
<span class="kw">let </span>ka = sm.insert(()); sec.insert(ka, <span class="string">"butter"</span>);
<span class="kw">let </span>kb = sm.insert(()); sec.insert(kb, <span class="string">"apples"</span>);
<span class="kw">let </span>kc = sm.insert(()); sec.insert(kc, <span class="string">"charlie"</span>);
sec.remove(kc); <span class="comment">// Make key c invalid.
</span><span class="macro">assert_eq!</span>(sec.get_disjoint_mut([ka, kb, kc]), <span class="prelude-val">None</span>); <span class="comment">// Has invalid key.
</span><span class="macro">assert_eq!</span>(sec.get_disjoint_mut([ka, ka]), <span class="prelude-val">None</span>); <span class="comment">// Not disjoint.
</span><span class="kw">let </span>[a, b] = sec.get_disjoint_mut([ka, kb]).unwrap();
std::mem::swap(a, b);
<span class="macro">assert_eq!</span>(sec[ka], <span class="string">"apples"</span>);
<span class="macro">assert_eq!</span>(sec[kb], <span class="string">"butter"</span>);</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.get_disjoint_unchecked_mut" class="method"><a class="src rightside" href="../src/slotmap/secondary.rs.html#659-669">Source</a><h4 class="code-header">pub unsafe fn <a href="#method.get_disjoint_unchecked_mut" class="fn">get_disjoint_unchecked_mut</a>&lt;const N: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.usize.html">usize</a>&gt;(
&amp;mut self,
keys: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.array.html">[K; N]</a>,
) -&gt; [<a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.reference.html">&amp;mut V</a>; <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.array.html">N</a>]</h4></section></summary><div class="docblock"><p>Returns mutable references to the values corresponding to the given
keys. All keys must be valid and disjoint.</p>
<p>Requires at least stable Rust version 1.51.</p>
<h5 id="safety-2"><a class="doc-anchor" href="#safety-2">§</a>Safety</h5>
<p>This should only be used if <code>contains_key(key)</code> is true for every given
key and no two keys are equal. Otherwise it is potentially unsafe.</p>
<h5 id="examples-17"><a class="doc-anchor" href="#examples-17">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sm = SlotMap::new();
<span class="kw">let </span><span class="kw-2">mut </span>sec = SecondaryMap::new();
<span class="kw">let </span>ka = sm.insert(()); sec.insert(ka, <span class="string">"butter"</span>);
<span class="kw">let </span>kb = sm.insert(()); sec.insert(kb, <span class="string">"apples"</span>);
<span class="kw">let </span>[a, b] = <span class="kw">unsafe </span>{ sec.get_disjoint_unchecked_mut([ka, kb]) };
std::mem::swap(a, b);
<span class="macro">assert_eq!</span>(sec[ka], <span class="string">"apples"</span>);
<span class="macro">assert_eq!</span>(sec[kb], <span class="string">"butter"</span>);</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.iter" class="method"><a class="src rightside" href="../src/slotmap/secondary.rs.html#691-697">Source</a><h4 class="code-header">pub fn <a href="#method.iter" class="fn">iter</a>(&amp;self) -&gt; <a class="struct" href="secondary/struct.Iter.html" title="struct slotmap::secondary::Iter">Iter</a>&lt;'_, K, V&gt; <a href="#" class="tooltip" data-notable-ty="Iter&lt;&#39;_, K, V&gt;"></a></h4></section></summary><div class="docblock"><p>An iterator visiting all key-value pairs in arbitrary order. The
iterator element type is <code>(K, &amp;'a V)</code>.</p>
<p>This function must iterate over all slots, empty or not. In the face of
many deleted elements it can be inefficient.</p>
<h5 id="examples-18"><a class="doc-anchor" href="#examples-18">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sm = SlotMap::new();
<span class="kw">let </span><span class="kw-2">mut </span>sec = SecondaryMap::new();
<span class="kw">let </span>k0 = sm.insert(<span class="number">0</span>); sec.insert(k0, <span class="number">10</span>);
<span class="kw">let </span>k1 = sm.insert(<span class="number">1</span>); sec.insert(k1, <span class="number">11</span>);
<span class="kw">let </span>k2 = sm.insert(<span class="number">2</span>); sec.insert(k2, <span class="number">12</span>);
<span class="kw">for </span>(k, v) <span class="kw">in </span>sm.iter() {
<span class="macro">println!</span>(<span class="string">"key: {:?}, val: {}"</span>, k, v);
}</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.iter_mut" class="method"><a class="src rightside" href="../src/slotmap/secondary.rs.html#726-732">Source</a><h4 class="code-header">pub fn <a href="#method.iter_mut" class="fn">iter_mut</a>(&amp;mut self) -&gt; <a class="struct" href="secondary/struct.IterMut.html" title="struct slotmap::secondary::IterMut">IterMut</a>&lt;'_, K, V&gt; <a href="#" class="tooltip" data-notable-ty="IterMut&lt;&#39;_, K, V&gt;"></a></h4></section></summary><div class="docblock"><p>An iterator visiting all key-value pairs in arbitrary order, with
mutable references to the values. The iterator element type is
<code>(K, &amp;'a mut V)</code>.</p>
<p>This function must iterate over all slots, empty or not. In the face of
many deleted elements it can be inefficient.</p>
<h5 id="examples-19"><a class="doc-anchor" href="#examples-19">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sm = SlotMap::new();
<span class="kw">let </span><span class="kw-2">mut </span>sec = SecondaryMap::new();
<span class="kw">let </span>k0 = sm.insert(<span class="number">1</span>); sec.insert(k0, <span class="number">10</span>);
<span class="kw">let </span>k1 = sm.insert(<span class="number">2</span>); sec.insert(k1, <span class="number">20</span>);
<span class="kw">let </span>k2 = sm.insert(<span class="number">3</span>); sec.insert(k2, <span class="number">30</span>);
<span class="kw">for </span>(k, v) <span class="kw">in </span>sec.iter_mut() {
<span class="kw">if </span>k != k1 {
<span class="kw-2">*</span>v <span class="kw-2">*</span>= -<span class="number">1</span>;
}
}
<span class="macro">assert_eq!</span>(sec[k0], -<span class="number">10</span>);
<span class="macro">assert_eq!</span>(sec[k1], <span class="number">20</span>);
<span class="macro">assert_eq!</span>(sec[k2], -<span class="number">30</span>);</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.keys" class="method"><a class="src rightside" href="../src/slotmap/secondary.rs.html#754-756">Source</a><h4 class="code-header">pub fn <a href="#method.keys" class="fn">keys</a>(&amp;self) -&gt; <a class="struct" href="secondary/struct.Keys.html" title="struct slotmap::secondary::Keys">Keys</a>&lt;'_, K, V&gt; <a href="#" class="tooltip" data-notable-ty="Keys&lt;&#39;_, K, V&gt;"></a></h4></section></summary><div class="docblock"><p>An iterator visiting all keys in arbitrary order. The iterator element
type is <code>K</code>.</p>
<p>This function must iterate over all slots, empty or not. In the face of
many deleted elements it can be inefficient.</p>
<h5 id="examples-20"><a class="doc-anchor" href="#examples-20">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sm = SlotMap::new();
<span class="kw">let </span><span class="kw-2">mut </span>sec = SecondaryMap::new();
<span class="kw">let </span>k0 = sm.insert(<span class="number">1</span>); sec.insert(k0, <span class="number">10</span>);
<span class="kw">let </span>k1 = sm.insert(<span class="number">2</span>); sec.insert(k1, <span class="number">20</span>);
<span class="kw">let </span>k2 = sm.insert(<span class="number">3</span>); sec.insert(k2, <span class="number">30</span>);
<span class="kw">let </span>keys: HashSet&lt;<span class="kw">_</span>&gt; = sec.keys().collect();
<span class="kw">let </span>check: HashSet&lt;<span class="kw">_</span>&gt; = <span class="macro">vec!</span>[k0, k1, k2].into_iter().collect();
<span class="macro">assert_eq!</span>(keys, check);</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.values" class="method"><a class="src rightside" href="../src/slotmap/secondary.rs.html#778-780">Source</a><h4 class="code-header">pub fn <a href="#method.values" class="fn">values</a>(&amp;self) -&gt; <a class="struct" href="secondary/struct.Values.html" title="struct slotmap::secondary::Values">Values</a>&lt;'_, K, V&gt; <a href="#" class="tooltip" data-notable-ty="Values&lt;&#39;_, K, V&gt;"></a></h4></section></summary><div class="docblock"><p>An iterator visiting all values in arbitrary order. The iterator element
type is <code>&amp;'a V</code>.</p>
<p>This function must iterate over all slots, empty or not. In the face of
many deleted elements it can be inefficient.</p>
<h5 id="examples-21"><a class="doc-anchor" href="#examples-21">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sm = SlotMap::new();
<span class="kw">let </span><span class="kw-2">mut </span>sec = SecondaryMap::new();
<span class="kw">let </span>k0 = sm.insert(<span class="number">1</span>); sec.insert(k0, <span class="number">10</span>);
<span class="kw">let </span>k1 = sm.insert(<span class="number">2</span>); sec.insert(k1, <span class="number">20</span>);
<span class="kw">let </span>k2 = sm.insert(<span class="number">3</span>); sec.insert(k2, <span class="number">30</span>);
<span class="kw">let </span>values: HashSet&lt;<span class="kw">_</span>&gt; = sec.values().collect();
<span class="kw">let </span>check: HashSet&lt;<span class="kw">_</span>&gt; = <span class="macro">vec!</span>[<span class="kw-2">&amp;</span><span class="number">10</span>, <span class="kw-2">&amp;</span><span class="number">20</span>, <span class="kw-2">&amp;</span><span class="number">30</span>].into_iter().collect();
<span class="macro">assert_eq!</span>(values, check);</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.values_mut" class="method"><a class="src rightside" href="../src/slotmap/secondary.rs.html#803-807">Source</a><h4 class="code-header">pub fn <a href="#method.values_mut" class="fn">values_mut</a>(&amp;mut self) -&gt; <a class="struct" href="secondary/struct.ValuesMut.html" title="struct slotmap::secondary::ValuesMut">ValuesMut</a>&lt;'_, K, V&gt; <a href="#" class="tooltip" data-notable-ty="ValuesMut&lt;&#39;_, K, V&gt;"></a></h4></section></summary><div class="docblock"><p>An iterator visiting all values mutably in arbitrary order. The iterator
element type is <code>&amp;'a mut V</code>.</p>
<p>This function must iterate over all slots, empty or not. In the face of
many deleted elements it can be inefficient.</p>
<h5 id="examples-22"><a class="doc-anchor" href="#examples-22">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sm = SlotMap::new();
<span class="kw">let </span><span class="kw-2">mut </span>sec = SecondaryMap::new();
sec.insert(sm.insert(<span class="number">1</span>), <span class="number">10</span>);
sec.insert(sm.insert(<span class="number">2</span>), <span class="number">20</span>);
sec.insert(sm.insert(<span class="number">3</span>), <span class="number">30</span>);
sec.values_mut().for_each(|n| { <span class="kw-2">*</span>n <span class="kw-2">*</span>= <span class="number">3 </span>});
<span class="kw">let </span>values: HashSet&lt;<span class="kw">_</span>&gt; = sec.into_iter().map(|(_k, v)| v).collect();
<span class="kw">let </span>check: HashSet&lt;<span class="kw">_</span>&gt; = <span class="macro">vec!</span>[<span class="number">30</span>, <span class="number">60</span>, <span class="number">90</span>].into_iter().collect();
<span class="macro">assert_eq!</span>(values, check);</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.entry" class="method"><a class="src rightside" href="../src/slotmap/secondary.rs.html#823-851">Source</a><h4 class="code-header">pub fn <a href="#method.entry" class="fn">entry</a>(&amp;mut self, key: K) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="secondary/enum.Entry.html" title="enum slotmap::secondary::Entry">Entry</a>&lt;'_, K, V&gt;&gt;</h4></section></summary><div class="docblock"><p>Gets the given keys corresponding <a href="secondary/enum.Entry.html" title="enum slotmap::secondary::Entry"><code>Entry</code></a> in the map for in-place
manipulation. May return <a href="https://doc.rust-lang.org/1.84.0/core/option/enum.Option.html#variant.None" title="variant core::option::Option::None"><code>None</code></a> if the key was removed from the
originating slot map.</p>
<h5 id="examples-23"><a class="doc-anchor" href="#examples-23">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sm = SlotMap::new();
<span class="kw">let </span><span class="kw-2">mut </span>sec = SecondaryMap::new();
<span class="kw">let </span>k = sm.insert(<span class="number">1</span>);
<span class="kw">let </span>v = sec.entry(k).unwrap().or_insert(<span class="number">10</span>);
<span class="macro">assert_eq!</span>(<span class="kw-2">*</span>v, <span class="number">10</span>);</code></pre></div>
</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-SecondaryMap%3CK,+V%3E" class="impl"><a class="src rightside" href="../src/slotmap/secondary.rs.html#121">Source</a><a href="#impl-Clone-for-SecondaryMap%3CK,+V%3E" class="anchor">§</a><h3 class="code-header">impl&lt;K: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + <a class="trait" href="trait.Key.html" title="trait slotmap::Key">Key</a>, V: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.SecondaryMap.html" title="struct slotmap::SecondaryMap">SecondaryMap</a>&lt;K, V&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../src/slotmap/secondary.rs.html#121">Source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.SecondaryMap.html" title="struct slotmap::SecondaryMap">SecondaryMap</a>&lt;K, V&gt;</h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/1.84.0/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.84.0/src/core/clone.rs.html#174">Source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: &amp;Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/1.84.0/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-SecondaryMap%3CK,+V%3E" class="impl"><a class="src rightside" href="../src/slotmap/secondary.rs.html#121">Source</a><a href="#impl-Debug-for-SecondaryMap%3CK,+V%3E" class="anchor">§</a><h3 class="code-header">impl&lt;K: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> + <a class="trait" href="trait.Key.html" title="trait slotmap::Key">Key</a>, V: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a>&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.SecondaryMap.html" title="struct slotmap::SecondaryMap">SecondaryMap</a>&lt;K, V&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../src/slotmap/secondary.rs.html#121">Source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/1.84.0/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/1.84.0/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/1.84.0/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Default-for-SecondaryMap%3CK,+V%3E" class="impl"><a class="src rightside" href="../src/slotmap/secondary.rs.html#854-858">Source</a><a href="#impl-Default-for-SecondaryMap%3CK,+V%3E" class="anchor">§</a><h3 class="code-header">impl&lt;K: <a class="trait" href="trait.Key.html" title="trait slotmap::Key">Key</a>, V&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.SecondaryMap.html" title="struct slotmap::SecondaryMap">SecondaryMap</a>&lt;K, V&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.default" class="method trait-impl"><a class="src rightside" href="../src/slotmap/secondary.rs.html#855-857">Source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -&gt; Self</h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/1.84.0/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Extend%3C(K,+%26V)%3E-for-SecondaryMap%3CK,+V%3E" class="impl"><a class="src rightside" href="../src/slotmap/secondary.rs.html#910-917">Source</a><a href="#impl-Extend%3C(K,+%26V)%3E-for-SecondaryMap%3CK,+V%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a, K: <a class="trait" href="trait.Key.html" title="trait slotmap::Key">Key</a>, V: 'a + <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a>&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/iter/traits/collect/trait.Extend.html" title="trait core::iter::traits::collect::Extend">Extend</a>&lt;(K, <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.reference.html">&amp;'a V</a>)&gt; for <a class="struct" href="struct.SecondaryMap.html" title="struct slotmap::SecondaryMap">SecondaryMap</a>&lt;K, V&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.extend-1" class="method trait-impl"><a class="src rightside" href="../src/slotmap/secondary.rs.html#911-916">Source</a><a href="#method.extend-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/iter/traits/collect/trait.Extend.html#tymethod.extend" class="fn">extend</a>&lt;I: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&lt;Item = (K, <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.reference.html">&amp;'a V</a>)&gt;&gt;(&amp;mut self, iter: I)</h4></section></summary><div class='docblock'>Extends a collection with the contents of an iterator. <a href="https://doc.rust-lang.org/1.84.0/core/iter/traits/collect/trait.Extend.html#tymethod.extend">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.extend_one-1" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/iter/traits/collect.rs.html#453">Source</a><a href="#method.extend_one-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/iter/traits/collect/trait.Extend.html#method.extend_one" class="fn">extend_one</a>(&amp;mut self, item: A)</h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>extend_one</code>)</span></div></span><div class='docblock'>Extends a collection with exactly one element.</div></details><details class="toggle method-toggle" open><summary><section id="method.extend_reserve-1" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/iter/traits/collect.rs.html#461">Source</a><a href="#method.extend_reserve-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/iter/traits/collect/trait.Extend.html#method.extend_reserve" class="fn">extend_reserve</a>(&amp;mut self, additional: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.usize.html">usize</a>)</h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>extend_one</code>)</span></div></span><div class='docblock'>Reserves capacity in a collection for the given number of additional elements. <a href="https://doc.rust-lang.org/1.84.0/core/iter/traits/collect/trait.Extend.html#method.extend_reserve">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Extend%3C(K,+V)%3E-for-SecondaryMap%3CK,+V%3E" class="impl"><a class="src rightside" href="../src/slotmap/secondary.rs.html#901-908">Source</a><a href="#impl-Extend%3C(K,+V)%3E-for-SecondaryMap%3CK,+V%3E" class="anchor">§</a><h3 class="code-header">impl&lt;K: <a class="trait" href="trait.Key.html" title="trait slotmap::Key">Key</a>, V&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/iter/traits/collect/trait.Extend.html" title="trait core::iter::traits::collect::Extend">Extend</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.tuple.html">(K, V)</a>&gt; for <a class="struct" href="struct.SecondaryMap.html" title="struct slotmap::SecondaryMap">SecondaryMap</a>&lt;K, V&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.extend" class="method trait-impl"><a class="src rightside" href="../src/slotmap/secondary.rs.html#902-907">Source</a><a href="#method.extend" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/iter/traits/collect/trait.Extend.html#tymethod.extend" class="fn">extend</a>&lt;I: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&lt;Item = <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.tuple.html">(K, V)</a>&gt;&gt;(&amp;mut self, iter: I)</h4></section></summary><div class='docblock'>Extends a collection with the contents of an iterator. <a href="https://doc.rust-lang.org/1.84.0/core/iter/traits/collect/trait.Extend.html#tymethod.extend">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.extend_one" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/iter/traits/collect.rs.html#453">Source</a><a href="#method.extend_one" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/iter/traits/collect/trait.Extend.html#method.extend_one" class="fn">extend_one</a>(&amp;mut self, item: A)</h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>extend_one</code>)</span></div></span><div class='docblock'>Extends a collection with exactly one element.</div></details><details class="toggle method-toggle" open><summary><section id="method.extend_reserve" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/iter/traits/collect.rs.html#461">Source</a><a href="#method.extend_reserve" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/iter/traits/collect/trait.Extend.html#method.extend_reserve" class="fn">extend_reserve</a>(&amp;mut self, additional: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.usize.html">usize</a>)</h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>extend_one</code>)</span></div></span><div class='docblock'>Reserves capacity in a collection for the given number of additional elements. <a href="https://doc.rust-lang.org/1.84.0/core/iter/traits/collect/trait.Extend.html#method.extend_reserve">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-FromIterator%3C(K,+V)%3E-for-SecondaryMap%3CK,+V%3E" class="impl"><a class="src rightside" href="../src/slotmap/secondary.rs.html#893-899">Source</a><a href="#impl-FromIterator%3C(K,+V)%3E-for-SecondaryMap%3CK,+V%3E" class="anchor">§</a><h3 class="code-header">impl&lt;K: <a class="trait" href="trait.Key.html" title="trait slotmap::Key">Key</a>, V&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/iter/traits/collect/trait.FromIterator.html" title="trait core::iter::traits::collect::FromIterator">FromIterator</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.tuple.html">(K, V)</a>&gt; for <a class="struct" href="struct.SecondaryMap.html" title="struct slotmap::SecondaryMap">SecondaryMap</a>&lt;K, V&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from_iter" class="method trait-impl"><a class="src rightside" href="../src/slotmap/secondary.rs.html#894-898">Source</a><a href="#method.from_iter" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/iter/traits/collect/trait.FromIterator.html#tymethod.from_iter" class="fn">from_iter</a>&lt;I: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&lt;Item = <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.tuple.html">(K, V)</a>&gt;&gt;(iter: I) -&gt; Self</h4></section></summary><div class='docblock'>Creates a value from an iterator. <a href="https://doc.rust-lang.org/1.84.0/core/iter/traits/collect/trait.FromIterator.html#tymethod.from_iter">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Index%3CK%3E-for-SecondaryMap%3CK,+V%3E" class="impl"><a class="src rightside" href="../src/slotmap/secondary.rs.html#860-869">Source</a><a href="#impl-Index%3CK%3E-for-SecondaryMap%3CK,+V%3E" class="anchor">§</a><h3 class="code-header">impl&lt;K: <a class="trait" href="trait.Key.html" title="trait slotmap::Key">Key</a>, V&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/ops/index/trait.Index.html" title="trait core::ops::index::Index">Index</a>&lt;K&gt; for <a class="struct" href="struct.SecondaryMap.html" title="struct slotmap::SecondaryMap">SecondaryMap</a>&lt;K, V&gt;</h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Output" class="associatedtype trait-impl"><a class="src rightside" href="../src/slotmap/secondary.rs.html#861">Source</a><a href="#associatedtype.Output" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.84.0/core/ops/index/trait.Index.html#associatedtype.Output" class="associatedtype">Output</a> = V</h4></section></summary><div class='docblock'>The returned type after indexing.</div></details><details class="toggle method-toggle" open><summary><section id="method.index" class="method trait-impl"><a class="src rightside" href="../src/slotmap/secondary.rs.html#863-868">Source</a><a href="#method.index" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/ops/index/trait.Index.html#tymethod.index" class="fn">index</a>(&amp;self, key: K) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.reference.html">&amp;V</a></h4></section></summary><div class='docblock'>Performs the indexing (<code>container[index]</code>) operation. <a href="https://doc.rust-lang.org/1.84.0/core/ops/index/trait.Index.html#tymethod.index">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-IndexMut%3CK%3E-for-SecondaryMap%3CK,+V%3E" class="impl"><a class="src rightside" href="../src/slotmap/secondary.rs.html#871-878">Source</a><a href="#impl-IndexMut%3CK%3E-for-SecondaryMap%3CK,+V%3E" class="anchor">§</a><h3 class="code-header">impl&lt;K: <a class="trait" href="trait.Key.html" title="trait slotmap::Key">Key</a>, V&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/ops/index/trait.IndexMut.html" title="trait core::ops::index::IndexMut">IndexMut</a>&lt;K&gt; for <a class="struct" href="struct.SecondaryMap.html" title="struct slotmap::SecondaryMap">SecondaryMap</a>&lt;K, V&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.index_mut" class="method trait-impl"><a class="src rightside" href="../src/slotmap/secondary.rs.html#872-877">Source</a><a href="#method.index_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/ops/index/trait.IndexMut.html#tymethod.index_mut" class="fn">index_mut</a>(&amp;mut self, key: K) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.reference.html">&amp;mut V</a></h4></section></summary><div class='docblock'>Performs the mutable indexing (<code>container[index]</code>) operation. <a href="https://doc.rust-lang.org/1.84.0/core/ops/index/trait.IndexMut.html#tymethod.index_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-IntoIterator-for-%26SecondaryMap%3CK,+V%3E" class="impl"><a class="src rightside" href="../src/slotmap/secondary.rs.html#1503-1510">Source</a><a href="#impl-IntoIterator-for-%26SecondaryMap%3CK,+V%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a, K: <a class="trait" href="trait.Key.html" title="trait slotmap::Key">Key</a>, V&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a> for &amp;'a <a class="struct" href="struct.SecondaryMap.html" title="struct slotmap::SecondaryMap">SecondaryMap</a>&lt;K, V&gt;</h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Item" class="associatedtype trait-impl"><a class="src rightside" href="../src/slotmap/secondary.rs.html#1504">Source</a><a href="#associatedtype.Item" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.84.0/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" class="associatedtype">Item</a> = (K, <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.reference.html">&amp;'a V</a>)</h4></section></summary><div class='docblock'>The type of the elements being iterated over.</div></details><details class="toggle" open><summary><section id="associatedtype.IntoIter" class="associatedtype trait-impl"><a class="src rightside" href="../src/slotmap/secondary.rs.html#1505">Source</a><a href="#associatedtype.IntoIter" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.84.0/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" class="associatedtype">IntoIter</a> = <a class="struct" href="secondary/struct.Iter.html" title="struct slotmap::secondary::Iter">Iter</a>&lt;'a, K, V&gt;</h4></section></summary><div class='docblock'>Which kind of iterator are we turning this into?</div></details><details class="toggle method-toggle" open><summary><section id="method.into_iter" class="method trait-impl"><a class="src rightside" href="../src/slotmap/secondary.rs.html#1507-1509">Source</a><a href="#method.into_iter" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/iter/traits/collect/trait.IntoIterator.html#tymethod.into_iter" class="fn">into_iter</a>(self) -&gt; Self::<a class="associatedtype" href="https://doc.rust-lang.org/1.84.0/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" title="type core::iter::traits::collect::IntoIterator::IntoIter">IntoIter</a></h4></section></summary><div class='docblock'>Creates an iterator from a value. <a href="https://doc.rust-lang.org/1.84.0/core/iter/traits/collect/trait.IntoIterator.html#tymethod.into_iter">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-IntoIterator-for-%26mut+SecondaryMap%3CK,+V%3E" class="impl"><a class="src rightside" href="../src/slotmap/secondary.rs.html#1512-1519">Source</a><a href="#impl-IntoIterator-for-%26mut+SecondaryMap%3CK,+V%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a, K: <a class="trait" href="trait.Key.html" title="trait slotmap::Key">Key</a>, V&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a> for &amp;'a mut <a class="struct" href="struct.SecondaryMap.html" title="struct slotmap::SecondaryMap">SecondaryMap</a>&lt;K, V&gt;</h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Item-1" class="associatedtype trait-impl"><a class="src rightside" href="../src/slotmap/secondary.rs.html#1513">Source</a><a href="#associatedtype.Item-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.84.0/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" class="associatedtype">Item</a> = (K, <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.reference.html">&amp;'a mut V</a>)</h4></section></summary><div class='docblock'>The type of the elements being iterated over.</div></details><details class="toggle" open><summary><section id="associatedtype.IntoIter-1" class="associatedtype trait-impl"><a class="src rightside" href="../src/slotmap/secondary.rs.html#1514">Source</a><a href="#associatedtype.IntoIter-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.84.0/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" class="associatedtype">IntoIter</a> = <a class="struct" href="secondary/struct.IterMut.html" title="struct slotmap::secondary::IterMut">IterMut</a>&lt;'a, K, V&gt;</h4></section></summary><div class='docblock'>Which kind of iterator are we turning this into?</div></details><details class="toggle method-toggle" open><summary><section id="method.into_iter-1" class="method trait-impl"><a class="src rightside" href="../src/slotmap/secondary.rs.html#1516-1518">Source</a><a href="#method.into_iter-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/iter/traits/collect/trait.IntoIterator.html#tymethod.into_iter" class="fn">into_iter</a>(self) -&gt; Self::<a class="associatedtype" href="https://doc.rust-lang.org/1.84.0/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" title="type core::iter::traits::collect::IntoIterator::IntoIter">IntoIter</a></h4></section></summary><div class='docblock'>Creates an iterator from a value. <a href="https://doc.rust-lang.org/1.84.0/core/iter/traits/collect/trait.IntoIterator.html#tymethod.into_iter">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-IntoIterator-for-SecondaryMap%3CK,+V%3E" class="impl"><a class="src rightside" href="../src/slotmap/secondary.rs.html#1521-1535">Source</a><a href="#impl-IntoIterator-for-SecondaryMap%3CK,+V%3E" class="anchor">§</a><h3 class="code-header">impl&lt;K: <a class="trait" href="trait.Key.html" title="trait slotmap::Key">Key</a>, V&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a> for <a class="struct" href="struct.SecondaryMap.html" title="struct slotmap::SecondaryMap">SecondaryMap</a>&lt;K, V&gt;</h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Item-2" class="associatedtype trait-impl"><a class="src rightside" href="../src/slotmap/secondary.rs.html#1522">Source</a><a href="#associatedtype.Item-2" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.84.0/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" class="associatedtype">Item</a> = <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.tuple.html">(K, V)</a></h4></section></summary><div class='docblock'>The type of the elements being iterated over.</div></details><details class="toggle" open><summary><section id="associatedtype.IntoIter-2" class="associatedtype trait-impl"><a class="src rightside" href="../src/slotmap/secondary.rs.html#1523">Source</a><a href="#associatedtype.IntoIter-2" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.84.0/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" class="associatedtype">IntoIter</a> = <a class="struct" href="secondary/struct.IntoIter.html" title="struct slotmap::secondary::IntoIter">IntoIter</a>&lt;K, V&gt;</h4></section></summary><div class='docblock'>Which kind of iterator are we turning this into?</div></details><details class="toggle method-toggle" open><summary><section id="method.into_iter-2" class="method trait-impl"><a class="src rightside" href="../src/slotmap/secondary.rs.html#1525-1534">Source</a><a href="#method.into_iter-2" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/iter/traits/collect/trait.IntoIterator.html#tymethod.into_iter" class="fn">into_iter</a>(self) -&gt; Self::<a class="associatedtype" href="https://doc.rust-lang.org/1.84.0/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" title="type core::iter::traits::collect::IntoIterator::IntoIter">IntoIter</a></h4></section></summary><div class='docblock'>Creates an iterator from a value. <a href="https://doc.rust-lang.org/1.84.0/core/iter/traits/collect/trait.IntoIterator.html#tymethod.into_iter">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-SecondaryMap%3CK,+V%3E" class="impl"><a class="src rightside" href="../src/slotmap/secondary.rs.html#880-889">Source</a><a href="#impl-PartialEq-for-SecondaryMap%3CK,+V%3E" class="anchor">§</a><h3 class="code-header">impl&lt;K: <a class="trait" href="trait.Key.html" title="trait slotmap::Key">Key</a>, V: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a>&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.SecondaryMap.html" title="struct slotmap::SecondaryMap">SecondaryMap</a>&lt;K, V&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../src/slotmap/secondary.rs.html#881-888">Source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;Self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Tests for <code>self</code> and <code>other</code> values to be equal, and is used by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.84.0/src/core/cmp.rs.html#261">Source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Tests for <code>!=</code>. The default implementation is almost always sufficient,
and should not be overridden without very good reason.</div></details></div></details><section id="impl-Eq-for-SecondaryMap%3CK,+V%3E" class="impl"><a class="src rightside" href="../src/slotmap/secondary.rs.html#891">Source</a><a href="#impl-Eq-for-SecondaryMap%3CK,+V%3E" class="anchor">§</a><h3 class="code-header">impl&lt;K: <a class="trait" href="trait.Key.html" title="trait slotmap::Key">Key</a>, V: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a>&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.SecondaryMap.html" title="struct slotmap::SecondaryMap">SecondaryMap</a>&lt;K, V&gt;</h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-SecondaryMap%3CK,+V%3E" class="impl"><a href="#impl-Freeze-for-SecondaryMap%3CK,+V%3E" class="anchor">§</a><h3 class="code-header">impl&lt;K, V&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.SecondaryMap.html" title="struct slotmap::SecondaryMap">SecondaryMap</a>&lt;K, V&gt;</h3></section><section id="impl-RefUnwindSafe-for-SecondaryMap%3CK,+V%3E" class="impl"><a href="#impl-RefUnwindSafe-for-SecondaryMap%3CK,+V%3E" class="anchor">§</a><h3 class="code-header">impl&lt;K, V&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.SecondaryMap.html" title="struct slotmap::SecondaryMap">SecondaryMap</a>&lt;K, V&gt;<div class="where">where
V: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,</div></h3></section><section id="impl-Send-for-SecondaryMap%3CK,+V%3E" class="impl"><a href="#impl-Send-for-SecondaryMap%3CK,+V%3E" class="anchor">§</a><h3 class="code-header">impl&lt;K, V&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.SecondaryMap.html" title="struct slotmap::SecondaryMap">SecondaryMap</a>&lt;K, V&gt;<div class="where">where
V: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</div></h3></section><section id="impl-Sync-for-SecondaryMap%3CK,+V%3E" class="impl"><a href="#impl-Sync-for-SecondaryMap%3CK,+V%3E" class="anchor">§</a><h3 class="code-header">impl&lt;K, V&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.SecondaryMap.html" title="struct slotmap::SecondaryMap">SecondaryMap</a>&lt;K, V&gt;<div class="where">where
V: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</div></h3></section><section id="impl-Unpin-for-SecondaryMap%3CK,+V%3E" class="impl"><a href="#impl-Unpin-for-SecondaryMap%3CK,+V%3E" class="anchor">§</a><h3 class="code-header">impl&lt;K, V&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.SecondaryMap.html" title="struct slotmap::SecondaryMap">SecondaryMap</a>&lt;K, V&gt;<div class="where">where
V: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,</div></h3></section><section id="impl-UnwindSafe-for-SecondaryMap%3CK,+V%3E" class="impl"><a href="#impl-UnwindSafe-for-SecondaryMap%3CK,+V%3E" class="anchor">§</a><h3 class="code-header">impl&lt;K, V&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.SecondaryMap.html" title="struct slotmap::SecondaryMap">SecondaryMap</a>&lt;K, V&gt;<div class="where">where
V: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a>,</div></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/any.rs.html#138">Source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/any.rs.html#139">Source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.84.0/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/1.84.0/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/borrow.rs.html#209">Source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
T: ?<a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/borrow.rs.html#211">Source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/1.84.0/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/borrow.rs.html#217">Source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
T: ?<a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/borrow.rs.html#218">Source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/1.84.0/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-CloneToUninit-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/clone.rs.html#273">Source</a><a href="#impl-CloneToUninit-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/clone/trait.CloneToUninit.html" title="trait core::clone::CloneToUninit">CloneToUninit</a> for T<div class="where">where
T: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone_to_uninit" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/clone.rs.html#275">Source</a><a href="#method.clone_to_uninit" class="anchor">§</a><h4 class="code-header">unsafe fn <a href="https://doc.rust-lang.org/1.84.0/core/clone/trait.CloneToUninit.html#tymethod.clone_to_uninit" class="fn">clone_to_uninit</a>(&amp;self, dst: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.pointer.html">*mut </a><a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.u8.html">u8</a>)</h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>clone_to_uninit</code>)</span></div></span><div class='docblock'>Performs copy-assignment from <code>self</code> to <code>dst</code>. <a href="https://doc.rust-lang.org/1.84.0/core/clone/trait.CloneToUninit.html#tymethod.clone_to_uninit">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#765">Source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#768">Source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#748-750">Source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#758">Source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
<p>That is, this conversion is whatever the implementation of
<code><a href="https://doc.rust-lang.org/1.84.0/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/alloc/borrow.rs.html#82-84">Source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
T: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/alloc/borrow.rs.html#86">Source</a><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.84.0/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/alloc/borrow.rs.html#87">Source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/1.84.0/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/alloc/borrow.rs.html#91">Source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/1.84.0/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#805-807">Source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#809">Source</a><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#812">Source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.0/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/1.84.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#790-792">Source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#794">Source</a><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#797">Source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.0/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/1.84.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div><script type="text/json" id="notable-traits-data">{"Drain<'_, K, V>":"<h3>Notable traits for <code><a class=\"struct\" href=\"secondary/struct.Drain.html\" title=\"struct slotmap::secondary::Drain\">Drain</a>&lt;'a, K, V&gt;</code></h3><pre><code><div class=\"where\">impl&lt;'a, K: <a class=\"trait\" href=\"trait.Key.html\" title=\"trait slotmap::Key\">Key</a>, V&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.84.0/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"secondary/struct.Drain.html\" title=\"struct slotmap::secondary::Drain\">Drain</a>&lt;'a, K, V&gt;</div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/1.84.0/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = <a class=\"primitive\" href=\"https://doc.rust-lang.org/1.84.0/std/primitive.tuple.html\">(K, V)</a>;</div>","Iter<'_, K, V>":"<h3>Notable traits for <code><a class=\"struct\" href=\"secondary/struct.Iter.html\" title=\"struct slotmap::secondary::Iter\">Iter</a>&lt;'a, K, V&gt;</code></h3><pre><code><div class=\"where\">impl&lt;'a, K: <a class=\"trait\" href=\"trait.Key.html\" title=\"trait slotmap::Key\">Key</a>, V&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.84.0/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"secondary/struct.Iter.html\" title=\"struct slotmap::secondary::Iter\">Iter</a>&lt;'a, K, V&gt;</div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/1.84.0/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = (K, <a class=\"primitive\" href=\"https://doc.rust-lang.org/1.84.0/std/primitive.reference.html\">&amp;'a V</a>);</div>","IterMut<'_, K, V>":"<h3>Notable traits for <code><a class=\"struct\" href=\"secondary/struct.IterMut.html\" title=\"struct slotmap::secondary::IterMut\">IterMut</a>&lt;'a, K, V&gt;</code></h3><pre><code><div class=\"where\">impl&lt;'a, K: <a class=\"trait\" href=\"trait.Key.html\" title=\"trait slotmap::Key\">Key</a>, V&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.84.0/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"secondary/struct.IterMut.html\" title=\"struct slotmap::secondary::IterMut\">IterMut</a>&lt;'a, K, V&gt;</div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/1.84.0/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = (K, <a class=\"primitive\" href=\"https://doc.rust-lang.org/1.84.0/std/primitive.reference.html\">&amp;'a mut V</a>);</div>","Keys<'_, K, V>":"<h3>Notable traits for <code><a class=\"struct\" href=\"secondary/struct.Keys.html\" title=\"struct slotmap::secondary::Keys\">Keys</a>&lt;'a, K, V&gt;</code></h3><pre><code><div class=\"where\">impl&lt;'a, K: <a class=\"trait\" href=\"trait.Key.html\" title=\"trait slotmap::Key\">Key</a>, V&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.84.0/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"secondary/struct.Keys.html\" title=\"struct slotmap::secondary::Keys\">Keys</a>&lt;'a, K, V&gt;</div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/1.84.0/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = K;</div>","Values<'_, K, V>":"<h3>Notable traits for <code><a class=\"struct\" href=\"secondary/struct.Values.html\" title=\"struct slotmap::secondary::Values\">Values</a>&lt;'a, K, V&gt;</code></h3><pre><code><div class=\"where\">impl&lt;'a, K: <a class=\"trait\" href=\"trait.Key.html\" title=\"trait slotmap::Key\">Key</a>, V&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.84.0/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"secondary/struct.Values.html\" title=\"struct slotmap::secondary::Values\">Values</a>&lt;'a, K, V&gt;</div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/1.84.0/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = <a class=\"primitive\" href=\"https://doc.rust-lang.org/1.84.0/std/primitive.reference.html\">&amp;'a V</a>;</div>","ValuesMut<'_, K, V>":"<h3>Notable traits for <code><a class=\"struct\" href=\"secondary/struct.ValuesMut.html\" title=\"struct slotmap::secondary::ValuesMut\">ValuesMut</a>&lt;'a, K, V&gt;</code></h3><pre><code><div class=\"where\">impl&lt;'a, K: <a class=\"trait\" href=\"trait.Key.html\" title=\"trait slotmap::Key\">Key</a>, V&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/1.84.0/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"secondary/struct.ValuesMut.html\" title=\"struct slotmap::secondary::ValuesMut\">ValuesMut</a>&lt;'a, K, V&gt;</div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/1.84.0/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = <a class=\"primitive\" href=\"https://doc.rust-lang.org/1.84.0/std/primitive.reference.html\">&amp;'a mut V</a>;</div>"}</script></section></div></main></body></html>