edlang/sharded_slab/trait.Clear.html

26 lines
15 KiB
HTML
Raw Normal View History

<!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="Trait implemented by types which can be cleared in place, retaining any allocated memory."><title>Clear in sharded_slab - Rust</title><script> if (window.location.protocol !== "file:") document.write(`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2">`)</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-e935ef01ae1c1829.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="sharded_slab" data-themes="" data-resource-suffix="" data-rustdoc-version="1.78.0 (9b00956e5 2024-04-29)" data-channel="1.78.0" data-search-js="search-42d8da7a6b9792c2.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-4c98445ec4002617.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-12cf3b4f4f9dc36d.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-04d5337699b92874.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../sharded_slab/index.html">sharded_slab</a><span class="version">0.1.7</span></h2></div><h2 class="location"><a href="#">Clear</a></h2><div class="sidebar-elems"><section><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.clear">clear</a></li></ul><h3><a href="#foreign-impls">Implementations on Foreign Types</a></h3><ul class="block"><li><a href="#impl-Clear-for-Box%3CT%3E">Box&lt;T&gt;</a></li><li><a href="#impl-Clear-for-HashMap%3CK,+V,+S%3E">HashMap&lt;K, V, S&gt;</a></li><li><a href="#impl-Clear-for-HashSet%3CT,+S%3E">HashSet&lt;T, S&gt;</a></li><li><a href="#impl-Clear-for-Mutex%3CT%3E">Mutex&lt;T&gt;</a></li><li><a href="#impl-Clear-for-Option%3CT%3E">Option&lt;T&gt;</a></li><li><a href="#impl-Clear-for-RwLock%3CT%3E">RwLock&lt;T&gt;</a></li><li><a href="#impl-Clear-for-String">String</a></li><li><a href="#impl-Clear-for-Vec%3CT%3E">Vec&lt;T&gt;</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In crate sharded_slab</a></h2></div></nav><div class="sidebar-resizer"></div>
<main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../sharded_slab/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Trait <a href="index.html">sharded_slab</a>::<wbr><a class="trait" href="#">Clear</a><button id="copy-path" title="Copy item path to clipboard"><img src="../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="src" href="../src/sharded_slab/clear.rs.html#24-27">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub trait Clear {
// Required method
fn <a href="#tymethod.clear" class="fn">clear</a>(&amp;mut self);
}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Trait implemented by types which can be cleared in place, retaining any
allocated memory.</p>
<p>This is essentially a generalization of methods on standard library
collection types, including as <a href="https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.clear"><code>Vec::clear</code></a>, <a href="https://doc.rust-lang.org/stable/std/string/struct.String.html#method.clear"><code>String::clear</code></a>, and
<a href="https://doc.rust-lang.org/stable/std/collections/struct.HashMap.html#method.clear"><code>HashMap::clear</code></a>. These methods drop all data stored in the collection,
but retain the collections heap allocation for future use. Types such as
<code>BTreeMap</code>, whose <code>clear</code> methods drops allocations, should not
implement this trait.</p>
<p>When implemented for types which do not own a heap allocation, <code>Clear</code>
should reset the type in place if possible. If the type has an empty state
or stores <code>Option</code>s, those values should be reset to the empty state. For
“plain old data” types, which hold no pointers to other data and do not have
an empty or initial state, its okay for a <code>Clear</code> implementation to be a
no-op. In that case, it essentially serves as a marker indicating that the
type may be reused to store new data.</p>
</div></details><h2 id="required-methods" class="section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="tymethod.clear" class="method"><a class="src rightside" href="../src/sharded_slab/clear.rs.html#26">source</a><h4 class="code-header">fn <a href="#tymethod.clear" class="fn">clear</a>(&amp;mut self)</h4></section></summary><div class="docblock"><p>Clear all data in <code>self</code>, retaining the allocated capacithy.</p>
</div></details></div><h2 id="foreign-impls" class="section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-Clear-for-String" class="impl"><a class="src rightside" href="../src/sharded_slab/clear.rs.html#74-79">source</a><a href="#impl-Clear-for-String" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Clear.html" title="trait sharded_slab::Clear">Clear</a> for <a class="struct" href="https://doc.rust-lang.org/1.78.0/alloc/string/struct.String.html" title="struct alloc::string::String">String</a></h3></section></summary><div class="impl-items"><section id="method.clear" class="method trait-impl"><a class="src rightside" href="../src/sharded_slab/clear.rs.html#76-78">source</a><a href="#method.clear" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.clear" class="fn">clear</a>(&amp;mut self)</h4></section></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Clear-for-HashMap%3CK,+V,+S%3E" class="impl"><a class="src rightside" href="../src/sharded_slab/clear.rs.html#52-61">source</a><a href="#impl-Clear-for-HashMap%3CK,+V,+S%3E" class="anchor">§</a><h3 class="code-header">impl&lt;K, V, S&gt; <a class="trait" href="trait.Clear.html" title="trait sharded_slab::Clear">Clear</a> for <a class="struct" href="https://doc.rust-lang.org/1.78.0/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a>&lt;K, V, S&gt;<div class="where">where
K: <a class="trait" href="https://doc.rust-lang.org/1.78.0/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + <a class="trait" href="https://doc.rust-lang.org/1.78.0/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a>,
S: <a class="trait" href="https://doc.rust-lang.org/1.78.0/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>,</div></h3></section></summary><div class="impl-items"><section id="method.clear-1" class="method trait-impl"><a class="src rightside" href="../src/sharded_slab/clear.rs.html#58-60">source</a><a href="#method.clear-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.clear" class="fn">clear</a>(&amp;mut self)</h4></section></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Clear-for-Option%3CT%3E" class="impl"><a class="src rightside" href="../src/sharded_slab/clear.rs.html#29-33">source</a><a href="#impl-Clear-for-Option%3CT%3E" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="trait.Clear.html" title="trait sharded_slab::Clear">Clear</a> for <a class="enum" href="https://doc.rust-lang.org/1.78.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;T&gt;</h3></section></summary><div class="impl-items"><section id="method.clear-2" class="method trait-impl"><a class="src rightside" href="../src/sharded_slab/clear.rs.html#30-32">source</a><a href="#method.clear-2" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.clear" class="fn">clear</a>(&amp;mut self)</h4></section></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Clear-for-Box%3CT%3E" class="impl"><a class="src rightside" href="../src/sharded_slab/clear.rs.html#35-43">source</a><a href="#impl-Clear-for-Box%3CT%3E" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="trait.Clear.html" title="trait sharded_slab::Clear">Clear</a> for <a class="struct" href="https://doc.rust-lang.org/1.78.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;T&gt;<div class="where">where
T: <a class="trait" href="trait.Clear.html" title="trait sharded_slab::Clear">Clear</a>,</div></h3></section></summary><div class="impl-items"><section id="method.clear-3" class="method trait-impl"><a class="src rightside" href="../src/sharded_slab/clear.rs.html#40-42">source</a><a href="#method.clear-3" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.clear" class="fn">clear</a>(&amp;mut self)</h4></section></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Clear-for-Vec%3CT%3E" class="impl"><a class="src rightside" href="../src/sharded_slab/clear.rs.html#45-50">source</a><a href="#impl-Clear-for-Vec%3CT%3E" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="trait.Clear.html" title="trait sharded_slab::Clear">Clear</a> for <a class="struct" href="https://doc.rust-lang.org/1.78.0/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;T&gt;</h3></section></summary><div class="impl-items"><section id="method.clear-4" class="method trait-impl"><a class="src rightside" href="../src/sharded_slab/clear.rs.html#47-49">source</a><a href="#method.clear-4" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.clear" class="fn">clear</a>(&amp;mut self)</h4></section></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Clear-for-HashSet%3CT,+S%3E" class="impl"><a class="src rightside" href="../src/sharded_slab/clear.rs.html#63-72">source</a><a href="#impl-Clear-for-HashSet%3CT,+S%3E" class="anchor">§</a><h3 class="code-header">impl&lt;T, S&gt; <a class="trait" href="trait.Clear.html" title="trait sharded_slab::Clear">Clear</a> for <a class="struct" href="https://doc.rust-lang.org/1.78.0/std/collections/hash/set/struct.HashSet.html" title="struct std::collections::hash::set::HashSet">HashSet</a>&lt;T, S&gt;<div class="where">where
T: <a class="trait" href="https://doc.rust-lang.org/1.78.0/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> + <a class="trait" href="https://doc.rust-lang.org/1.78.0/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a>,
S: <a class="trait" href="https://doc.rust-lang.org/1.78.0/core/hash/trait.BuildHasher.html" title="trait core::hash::BuildHasher">BuildHasher</a>,</div></h3></section></summary><div class="impl-items"><section id="method.clear-5" class="method trait-impl"><a class="src rightside" href="../src/sharded_slab/clear.rs.html#69-71">source</a><a href="#method.clear-5" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.clear" class="fn">clear</a>(&amp;mut self)</h4></section></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Clear-for-Mutex%3CT%3E" class="impl"><a class="src rightside" href="../src/sharded_slab/clear.rs.html#81-86">source</a><a href="#impl-Clear-for-Mutex%3CT%3E" class="anchor">§</a><h3 class="code-header">impl&lt;T: <a class="trait" href="trait.Clear.html" title="trait sharded_slab::Clear">Clear</a>&gt; <a class="trait" href="trait.Clear.html" title="trait sharded_slab::Clear">Clear</a> for <a class="struct" href="https://doc.rust-lang.org/1.78.0/std/sync/mutex/struct.Mutex.html" title="struct std::sync::mutex::Mutex">Mutex</a>&lt;T&gt;</h3></section></summary><div class="impl-items"><section id="method.clear-6" class="method trait-impl"><a class="src rightside" href="../src/sharded_slab/clear.rs.html#83-85">source</a><a href="#method.clear-6" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.clear" class="fn">clear</a>(&amp;mut self)</h4></section></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Clear-for-RwLock%3CT%3E" class="impl"><a class="src rightside" href="../src/sharded_slab/clear.rs.html#88-93">source</a><a href="#impl-Clear-for-RwLock%3CT%3E" class="anchor">§</a><h3 class="code-header">impl&lt;T: <a class="trait" href="trait.Clear.html" title="trait sharded_slab::Clear">Clear</a>&gt; <a class="trait" href="trait.Clear.html" title="trait sharded_slab::Clear">Clear</a> for <a class="struct" href="https://doc.rust-lang.org/1.78.0/std/sync/rwlock/struct.RwLock.html" title="struct std::sync::rwlock::RwLock">RwLock</a>&lt;T&gt;</h3></section></summary><div class="impl-items"><section id="method.clear-7" class="method trait-impl"><a class="src rightside" href="../src/sharded_slab/clear.rs.html#90-92">source</a><a href="#method.clear-7" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.clear" class="fn">clear</a>(&amp;mut self)</h4></section></div></details><h2 id="implementors" class="section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"></div><script src="../trait.impl/sharded_slab/clear/trait.Clear.js" data-ignore-extern-crates="alloc,core,std" async></script></section></div></main></body></html>