rtic/2/api/rp2040_pac/struct.SCB.html
2024-10-24 05:57:30 +00:00

216 lines
No EOL
56 KiB
HTML

<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="System Control Block"><title>SCB in rp2040_pac - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.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-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-492a78a4a87dcc01.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="rp2040_pac" data-themes="" data-resource-suffix="" data-rustdoc-version="1.82.0 (f6e511eec 2024-10-15)" data-channel="1.82.0" data-search-js="search-a99f1315e7cc5121.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-118b08c4c78b968e.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-921df33f47b8780c.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-3b12f09e550e0385.css"></noscript><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 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="../rp2040_pac/index.html">rp2040_<wbr>pac</a><span class="version">0.6.0</span></h2></div><h2 class="location"><a href="#">SCB</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Associated Constants</a></h3><ul class="block associatedconstant"><li><a href="#associatedconstant.PTR">PTR</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.clean_dcache">clean_dcache</a></li><li><a href="#method.clean_dcache_by_address">clean_dcache_by_address</a></li><li><a href="#method.clean_dcache_by_ref">clean_dcache_by_ref</a></li><li><a href="#method.clean_dcache_by_slice">clean_dcache_by_slice</a></li><li><a href="#method.clean_invalidate_dcache">clean_invalidate_dcache</a></li><li><a href="#method.clean_invalidate_dcache_by_address">clean_invalidate_dcache_by_address</a></li><li><a href="#method.clear_pendst">clear_pendst</a></li><li><a href="#method.clear_pendsv">clear_pendsv</a></li><li><a href="#method.clear_sleepdeep">clear_sleepdeep</a></li><li><a href="#method.clear_sleeponexit">clear_sleeponexit</a></li><li><a href="#method.dcache_enabled">dcache_enabled</a></li><li><a href="#method.disable">disable</a></li><li><a href="#method.disable_dcache">disable_dcache</a></li><li><a href="#method.disable_icache">disable_icache</a></li><li><a href="#method.enable">enable</a></li><li><a href="#method.enable_dcache">enable_dcache</a></li><li><a href="#method.enable_icache">enable_icache</a></li><li><a href="#method.get_priority">get_priority</a></li><li><a href="#method.icache_enabled">icache_enabled</a></li><li><a href="#method.invalidate_dcache_by_address">invalidate_dcache_by_address</a></li><li><a href="#method.invalidate_dcache_by_ref">invalidate_dcache_by_ref</a></li><li><a href="#method.invalidate_dcache_by_slice">invalidate_dcache_by_slice</a></li><li><a href="#method.invalidate_icache">invalidate_icache</a></li><li><a href="#method.is_enabled">is_enabled</a></li><li><a href="#method.is_pendst_pending">is_pendst_pending</a></li><li><a href="#method.is_pendsv_pending">is_pendsv_pending</a></li><li><a href="#method.ptr">ptr</a></li><li><a href="#method.set_pendst">set_pendst</a></li><li><a href="#method.set_pendsv">set_pendsv</a></li><li><a href="#method.set_priority">set_priority</a></li><li><a href="#method.set_sleepdeep">set_sleepdeep</a></li><li><a href="#method.set_sleeponexit">set_sleeponexit</a></li><li><a href="#method.sys_reset">sys_reset</a></li><li><a href="#method.vect_active">vect_active</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Deref-for-SCB">Deref</a></li><li><a href="#impl-Send-for-SCB">Send</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Sync-for-SCB">!Sync</a></li><li><a href="#impl-Freeze-for-SCB">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-SCB">RefUnwindSafe</a></li><li><a href="#impl-Unpin-for-SCB">Unpin</a></li><li><a href="#impl-UnwindSafe-for-SCB">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">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&#60;T&#62;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&#60;T&#62;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&#60;T&#62;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&#60;U&#62;</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&#60;U&#62;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&#60;U&#62;</a></li></ul></section><h2><a href="index.html">In crate rp2040_<wbr>pac</a></h2></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"><h1>Struct <a href="index.html">rp2040_pac</a>::<wbr><a class="struct" href="#">SCB</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/cortex_m/peripheral/mod.rs.html#602">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct SCB { <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>System Control Block</p>
</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-SCB" class="impl"><a class="src rightside" href="../src/cortex_m/peripheral/scb.rs.html#169">source</a><a href="#impl-SCB" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.SCB.html" title="struct rp2040_pac::SCB">SCB</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.vect_active" class="method"><a class="src rightside" href="../src/cortex_m/peripheral/scb.rs.html#172">source</a><h4 class="code-header">pub fn <a href="#method.vect_active" class="fn">vect_active</a>() -&gt; <a class="enum" href="../cortex_m/peripheral/scb/enum.VectActive.html" title="enum cortex_m::peripheral::scb::VectActive">VectActive</a></h4></section></summary><div class="docblock"><p>Returns the active exception number</p>
</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-SCB-1" class="impl"><a class="src rightside" href="../src/cortex_m/peripheral/scb.rs.html#319">source</a><a href="#impl-SCB-1" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.SCB.html" title="struct rp2040_pac::SCB">SCB</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.enable_icache" class="method"><a class="src rightside" href="../src/cortex_m/peripheral/scb.rs.html#324">source</a><h4 class="code-header">pub fn <a href="#method.enable_icache" class="fn">enable_icache</a>(&amp;mut self)</h4></section></summary><div class="docblock"><p>Enables I-cache if currently disabled.</p>
<p>This operation first invalidates the entire I-cache.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.disable_icache" class="method"><a class="src rightside" href="../src/cortex_m/peripheral/scb.rs.html#354">source</a><h4 class="code-header">pub fn <a href="#method.disable_icache" class="fn">disable_icache</a>(&amp;mut self)</h4></section></summary><div class="docblock"><p>Disables I-cache if currently enabled.</p>
<p>This operation invalidates the entire I-cache after disabling.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.icache_enabled" class="method"><a class="src rightside" href="../src/cortex_m/peripheral/scb.rs.html#376">source</a><h4 class="code-header">pub fn <a href="#method.icache_enabled" class="fn">icache_enabled</a>() -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns whether the I-cache is currently enabled.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.invalidate_icache" class="method"><a class="src rightside" href="../src/cortex_m/peripheral/scb.rs.html#386">source</a><h4 class="code-header">pub fn <a href="#method.invalidate_icache" class="fn">invalidate_icache</a>(&amp;mut self)</h4></section></summary><div class="docblock"><p>Invalidates the entire I-cache.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.enable_dcache" class="method"><a class="src rightside" href="../src/cortex_m/peripheral/scb.rs.html#402">source</a><h4 class="code-header">pub fn <a href="#method.enable_dcache" class="fn">enable_dcache</a>(&amp;mut self, cpuid: &amp;mut <a class="struct" href="struct.CPUID.html" title="struct rp2040_pac::CPUID">CPUID</a>)</h4></section></summary><div class="docblock"><p>Enables D-cache if currently disabled.</p>
<p>This operation first invalidates the entire D-cache, ensuring it does
not contain stale values before being enabled.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.disable_dcache" class="method"><a class="src rightside" href="../src/cortex_m/peripheral/scb.rs.html#430">source</a><h4 class="code-header">pub fn <a href="#method.disable_dcache" class="fn">disable_dcache</a>(&amp;mut self, cpuid: &amp;mut <a class="struct" href="struct.CPUID.html" title="struct rp2040_pac::CPUID">CPUID</a>)</h4></section></summary><div class="docblock"><p>Disables D-cache if currently enabled.</p>
<p>This operation subsequently cleans and invalidates the entire D-cache,
ensuring all contents are safely written back to main memory after disabling.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.dcache_enabled" class="method"><a class="src rightside" href="../src/cortex_m/peripheral/scb.rs.html#446">source</a><h4 class="code-header">pub fn <a href="#method.dcache_enabled" class="fn">dcache_enabled</a>() -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns whether the D-cache is currently enabled.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.clean_dcache" class="method"><a class="src rightside" href="../src/cortex_m/peripheral/scb.rs.html#484">source</a><h4 class="code-header">pub fn <a href="#method.clean_dcache" class="fn">clean_dcache</a>(&amp;mut self, cpuid: &amp;mut <a class="struct" href="struct.CPUID.html" title="struct rp2040_pac::CPUID">CPUID</a>)</h4></section></summary><div class="docblock"><p>Cleans the entire D-cache.</p>
<p>This function causes everything in the D-cache to be written back to main memory,
overwriting whatever is already there.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.clean_invalidate_dcache" class="method"><a class="src rightside" href="../src/cortex_m/peripheral/scb.rs.html#507">source</a><h4 class="code-header">pub fn <a href="#method.clean_invalidate_dcache" class="fn">clean_invalidate_dcache</a>(&amp;mut self, cpuid: &amp;mut <a class="struct" href="struct.CPUID.html" title="struct rp2040_pac::CPUID">CPUID</a>)</h4></section></summary><div class="docblock"><p>Cleans and invalidates the entire D-cache.</p>
<p>This function causes everything in the D-cache to be written back to main memory,
and then marks the entire D-cache as invalid, causing future reads to first fetch
from main memory.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.invalidate_dcache_by_address" class="method"><a class="src rightside" href="../src/cortex_m/peripheral/scb.rs.html#559">source</a><h4 class="code-header">pub unsafe fn <a href="#method.invalidate_dcache_by_address" class="fn">invalidate_dcache_by_address</a>(&amp;mut self, addr: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a>, size: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a>)</h4></section></summary><div class="docblock"><p>Invalidates D-cache by address.</p>
<ul>
<li><code>addr</code>: The address to invalidate, which must be cache-line aligned.</li>
<li><code>size</code>: Number of bytes to invalidate, which must be a multiple of the cache line size.</li>
</ul>
<p>Invalidates D-cache cache lines, starting from the first line containing <code>addr</code>,
finishing once at least <code>size</code> bytes have been invalidated.</p>
<p>Invalidation causes the next read access to memory to be fetched from main memory instead
of the cache.</p>
<h5 id="cache-line-sizes"><a class="doc-anchor" href="#cache-line-sizes">§</a>Cache Line Sizes</h5>
<p>Cache line sizes vary by core. For all Cortex-M7 cores, the cache line size is fixed
to 32 bytes, which means <code>addr</code> must be 32-byte aligned and <code>size</code> must be a multiple
of 32. At the time of writing, no other Cortex-M cores have data caches.</p>
<p>If <code>addr</code> is not cache-line aligned, or <code>size</code> is not a multiple of the cache line size,
other data before or after the desired memory would also be invalidated, which can very
easily cause memory corruption and undefined behaviour.</p>
<h5 id="safety"><a class="doc-anchor" href="#safety">§</a>Safety</h5>
<p>After invalidating, the next read of invalidated data will be from main memory. This may
cause recent writes to be lost, potentially including writes that initialized objects.
Therefore, this method may cause uninitialized memory or invalid values to be read,
resulting in undefined behaviour. You must ensure that main memory contains valid and
initialized values before invalidating.</p>
<p><code>addr</code> <strong>must</strong> be aligned to the size of the cache lines, and <code>size</code> <strong>must</strong> be a
multiple of the cache line size, otherwise this function will invalidate other memory,
easily leading to memory corruption and undefined behaviour. This precondition is checked
in debug builds using a <code>debug_assert!()</code>, but not checked in release builds to avoid
a runtime-dependent <code>panic!()</code> call.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.invalidate_dcache_by_ref" class="method"><a class="src rightside" href="../src/cortex_m/peripheral/scb.rs.html#627">source</a><h4 class="code-header">pub unsafe fn <a href="#method.invalidate_dcache_by_ref" class="fn">invalidate_dcache_by_ref</a>&lt;T&gt;(&amp;mut self, obj: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class="docblock"><p>Invalidates an object from the D-cache.</p>
<ul>
<li><code>obj</code>: The object to invalidate.</li>
</ul>
<p>Invalidates D-cache starting from the first cache line containing <code>obj</code>,
continuing to invalidate cache lines until all of <code>obj</code> has been invalidated.</p>
<p>Invalidation causes the next read access to memory to be fetched from main memory instead
of the cache.</p>
<h5 id="cache-line-sizes-1"><a class="doc-anchor" href="#cache-line-sizes-1">§</a>Cache Line Sizes</h5>
<p>Cache line sizes vary by core. For all Cortex-M7 cores, the cache line size is fixed
to 32 bytes, which means <code>obj</code> must be 32-byte aligned, and its size must be a multiple
of 32 bytes. At the time of writing, no other Cortex-M cores have data caches.</p>
<p>If <code>obj</code> is not cache-line aligned, or its size is not a multiple of the cache line size,
other data before or after the desired memory would also be invalidated, which can very
easily cause memory corruption and undefined behaviour.</p>
<h5 id="safety-1"><a class="doc-anchor" href="#safety-1">§</a>Safety</h5>
<p>After invalidating, <code>obj</code> will be read from main memory on next access. This may cause
recent writes to <code>obj</code> to be lost, potentially including the write that initialized it.
Therefore, this method may cause uninitialized memory or invalid values to be read,
resulting in undefined behaviour. You must ensure that main memory contains a valid and
initialized value for T before invalidating <code>obj</code>.</p>
<p><code>obj</code> <strong>must</strong> be aligned to the size of the cache lines, and its size <strong>must</strong> be a
multiple of the cache line size, otherwise this function will invalidate other memory,
easily leading to memory corruption and undefined behaviour. This precondition is checked
in debug builds using a <code>debug_assert!()</code>, but not checked in release builds to avoid
a runtime-dependent <code>panic!()</code> call.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.invalidate_dcache_by_slice" class="method"><a class="src rightside" href="../src/cortex_m/peripheral/scb.rs.html#665">source</a><h4 class="code-header">pub unsafe fn <a href="#method.invalidate_dcache_by_slice" class="fn">invalidate_dcache_by_slice</a>&lt;T&gt;(&amp;mut self, slice: &amp;mut <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.slice.html">[T]</a>)</h4></section></summary><div class="docblock"><p>Invalidates a slice from the D-cache.</p>
<ul>
<li><code>slice</code>: The slice to invalidate.</li>
</ul>
<p>Invalidates D-cache starting from the first cache line containing members of <code>slice</code>,
continuing to invalidate cache lines until all of <code>slice</code> has been invalidated.</p>
<p>Invalidation causes the next read access to memory to be fetched from main memory instead
of the cache.</p>
<h5 id="cache-line-sizes-2"><a class="doc-anchor" href="#cache-line-sizes-2">§</a>Cache Line Sizes</h5>
<p>Cache line sizes vary by core. For all Cortex-M7 cores, the cache line size is fixed
to 32 bytes, which means <code>slice</code> must be 32-byte aligned, and its size must be a multiple
of 32 bytes. At the time of writing, no other Cortex-M cores have data caches.</p>
<p>If <code>slice</code> is not cache-line aligned, or its size is not a multiple of the cache line size,
other data before or after the desired memory would also be invalidated, which can very
easily cause memory corruption and undefined behaviour.</p>
<h5 id="safety-2"><a class="doc-anchor" href="#safety-2">§</a>Safety</h5>
<p>After invalidating, <code>slice</code> will be read from main memory on next access. This may cause
recent writes to <code>slice</code> to be lost, potentially including the write that initialized it.
Therefore, this method may cause uninitialized memory or invalid values to be read,
resulting in undefined behaviour. You must ensure that main memory contains valid and
initialized values for T before invalidating <code>slice</code>.</p>
<p><code>slice</code> <strong>must</strong> be aligned to the size of the cache lines, and its size <strong>must</strong> be a
multiple of the cache line size, otherwise this function will invalidate other memory,
easily leading to memory corruption and undefined behaviour. This precondition is checked
in debug builds using a <code>debug_assert!()</code>, but not checked in release builds to avoid
a runtime-dependent <code>panic!()</code> call.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.clean_dcache_by_address" class="method"><a class="src rightside" href="../src/cortex_m/peripheral/scb.rs.html#694">source</a><h4 class="code-header">pub fn <a href="#method.clean_dcache_by_address" class="fn">clean_dcache_by_address</a>(&amp;mut self, addr: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a>, size: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a>)</h4></section></summary><div class="docblock"><p>Cleans D-cache by address.</p>
<ul>
<li><code>addr</code>: The address to start cleaning at.</li>
<li><code>size</code>: The number of bytes to clean.</li>
</ul>
<p>Cleans D-cache cache lines, starting from the first line containing <code>addr</code>,
finishing once at least <code>size</code> bytes have been invalidated.</p>
<p>Cleaning the cache causes whatever data is present in the cache to be immediately written
to main memory, overwriting whatever was in main memory.</p>
<h5 id="cache-line-sizes-3"><a class="doc-anchor" href="#cache-line-sizes-3">§</a>Cache Line Sizes</h5>
<p>Cache line sizes vary by core. For all Cortex-M7 cores, the cache line size is fixed
to 32 bytes, which means <code>addr</code> should generally be 32-byte aligned and <code>size</code> should be a
multiple of 32. At the time of writing, no other Cortex-M cores have data caches.</p>
<p>If <code>addr</code> is not cache-line aligned, or <code>size</code> is not a multiple of the cache line size,
other data before or after the desired memory will also be cleaned. From the point of view
of the core executing this function, memory remains consistent, so this is not unsound,
but is worth knowing about.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.clean_dcache_by_ref" class="method"><a class="src rightside" href="../src/cortex_m/peripheral/scb.rs.html#734">source</a><h4 class="code-header">pub fn <a href="#method.clean_dcache_by_ref" class="fn">clean_dcache_by_ref</a>&lt;T&gt;(&amp;mut self, obj: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.reference.html">&amp;T</a>)</h4></section></summary><div class="docblock"><p>Cleans an object from the D-cache.</p>
<ul>
<li><code>obj</code>: The object to clean.</li>
</ul>
<p>Cleans D-cache starting from the first cache line containing <code>obj</code>,
continuing to clean cache lines until all of <code>obj</code> has been cleaned.</p>
<p>It is recommended that <code>obj</code> is both aligned to the cache line size and a multiple of
the cache line size long, otherwise surrounding data will also be cleaned.</p>
<p>Cleaning the cache causes whatever data is present in the cache to be immediately written
to main memory, overwriting whatever was in main memory.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.clean_dcache_by_slice" class="method"><a class="src rightside" href="../src/cortex_m/peripheral/scb.rs.html#751">source</a><h4 class="code-header">pub fn <a href="#method.clean_dcache_by_slice" class="fn">clean_dcache_by_slice</a>&lt;T&gt;(&amp;mut self, slice: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.slice.html">[T]</a>)</h4></section></summary><div class="docblock"><p>Cleans a slice from D-cache.</p>
<ul>
<li><code>slice</code>: The slice to clean.</li>
</ul>
<p>Cleans D-cache starting from the first cache line containing members of <code>slice</code>,
continuing to clean cache lines until all of <code>slice</code> has been cleaned.</p>
<p>It is recommended that <code>slice</code> is both aligned to the cache line size and a multiple of
the cache line size long, otherwise surrounding data will also be cleaned.</p>
<p>Cleaning the cache causes whatever data is present in the cache to be immediately written
to main memory, overwriting whatever was in main memory.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.clean_invalidate_dcache_by_address" class="method"><a class="src rightside" href="../src/cortex_m/peripheral/scb.rs.html#773">source</a><h4 class="code-header">pub fn <a href="#method.clean_invalidate_dcache_by_address" class="fn">clean_invalidate_dcache_by_address</a>(&amp;mut self, addr: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a>, size: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a>)</h4></section></summary><div class="docblock"><p>Cleans and invalidates D-cache by address.</p>
<ul>
<li><code>addr</code>: The address to clean and invalidate.</li>
<li><code>size</code>: The number of bytes to clean and invalidate.</li>
</ul>
<p>Cleans and invalidates D-cache starting from the first cache line containing <code>addr</code>,
finishing once at least <code>size</code> bytes have been cleaned and invalidated.</p>
<p>It is recommended that <code>addr</code> is aligned to the cache line size and <code>size</code> is a multiple of
the cache line size, otherwise surrounding data will also be cleaned.</p>
<p>Cleaning and invalidating causes data in the D-cache to be written back to main memory,
and then marks that data in the D-cache as invalid, causing future reads to first fetch
from main memory.</p>
</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-SCB-2" class="impl"><a class="src rightside" href="../src/cortex_m/peripheral/scb.rs.html#802">source</a><a href="#impl-SCB-2" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.SCB.html" title="struct rp2040_pac::SCB">SCB</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.set_sleepdeep" class="method"><a class="src rightside" href="../src/cortex_m/peripheral/scb.rs.html#805">source</a><h4 class="code-header">pub fn <a href="#method.set_sleepdeep" class="fn">set_sleepdeep</a>(&amp;mut self)</h4></section></summary><div class="docblock"><p>Set the SLEEPDEEP bit in the SCR register</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.clear_sleepdeep" class="method"><a class="src rightside" href="../src/cortex_m/peripheral/scb.rs.html#813">source</a><h4 class="code-header">pub fn <a href="#method.clear_sleepdeep" class="fn">clear_sleepdeep</a>(&amp;mut self)</h4></section></summary><div class="docblock"><p>Clear the SLEEPDEEP bit in the SCR register</p>
</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-SCB-3" class="impl"><a class="src rightside" href="../src/cortex_m/peripheral/scb.rs.html#822">source</a><a href="#impl-SCB-3" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.SCB.html" title="struct rp2040_pac::SCB">SCB</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.set_sleeponexit" class="method"><a class="src rightside" href="../src/cortex_m/peripheral/scb.rs.html#825">source</a><h4 class="code-header">pub fn <a href="#method.set_sleeponexit" class="fn">set_sleeponexit</a>(&amp;mut self)</h4></section></summary><div class="docblock"><p>Set the SLEEPONEXIT bit in the SCR register</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.clear_sleeponexit" class="method"><a class="src rightside" href="../src/cortex_m/peripheral/scb.rs.html#833">source</a><h4 class="code-header">pub fn <a href="#method.clear_sleeponexit" class="fn">clear_sleeponexit</a>(&amp;mut self)</h4></section></summary><div class="docblock"><p>Clear the SLEEPONEXIT bit in the SCR register</p>
</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-SCB-4" class="impl"><a class="src rightside" href="../src/cortex_m/peripheral/scb.rs.html#844">source</a><a href="#impl-SCB-4" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.SCB.html" title="struct rp2040_pac::SCB">SCB</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.sys_reset" class="method"><a class="src rightside" href="../src/cortex_m/peripheral/scb.rs.html#847">source</a><h4 class="code-header">pub fn <a href="#method.sys_reset" class="fn">sys_reset</a>() -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.never.html">!</a></h4></section></summary><div class="docblock"><p>Initiate a system reset request to reset the MCU</p>
</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-SCB-5" class="impl"><a class="src rightside" href="../src/cortex_m/peripheral/scb.rs.html#872">source</a><a href="#impl-SCB-5" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.SCB.html" title="struct rp2040_pac::SCB">SCB</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.set_pendsv" class="method"><a class="src rightside" href="../src/cortex_m/peripheral/scb.rs.html#875">source</a><h4 class="code-header">pub fn <a href="#method.set_pendsv" class="fn">set_pendsv</a>()</h4></section></summary><div class="docblock"><p>Set the PENDSVSET bit in the ICSR register which will pend the PendSV interrupt</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.is_pendsv_pending" class="method"><a class="src rightside" href="../src/cortex_m/peripheral/scb.rs.html#883">source</a><h4 class="code-header">pub fn <a href="#method.is_pendsv_pending" class="fn">is_pendsv_pending</a>() -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Check if PENDSVSET bit in the ICSR register is set meaning PendSV interrupt is pending</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.clear_pendsv" class="method"><a class="src rightside" href="../src/cortex_m/peripheral/scb.rs.html#889">source</a><h4 class="code-header">pub fn <a href="#method.clear_pendsv" class="fn">clear_pendsv</a>()</h4></section></summary><div class="docblock"><p>Set the PENDSVCLR bit in the ICSR register which will clear a pending PendSV interrupt</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.set_pendst" class="method"><a class="src rightside" href="../src/cortex_m/peripheral/scb.rs.html#897">source</a><h4 class="code-header">pub fn <a href="#method.set_pendst" class="fn">set_pendst</a>()</h4></section></summary><div class="docblock"><p>Set the PENDSTSET bit in the ICSR register which will pend a SysTick interrupt</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.is_pendst_pending" class="method"><a class="src rightside" href="../src/cortex_m/peripheral/scb.rs.html#905">source</a><h4 class="code-header">pub fn <a href="#method.is_pendst_pending" class="fn">is_pendst_pending</a>() -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Check if PENDSTSET bit in the ICSR register is set meaning SysTick interrupt is pending</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.clear_pendst" class="method"><a class="src rightside" href="../src/cortex_m/peripheral/scb.rs.html#911">source</a><h4 class="code-header">pub fn <a href="#method.clear_pendst" class="fn">clear_pendst</a>()</h4></section></summary><div class="docblock"><p>Set the PENDSTCLR bit in the ICSR register which will clear a pending SysTick interrupt</p>
</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-SCB-6" class="impl"><a class="src rightside" href="../src/cortex_m/peripheral/scb.rs.html#954">source</a><a href="#impl-SCB-6" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.SCB.html" title="struct rp2040_pac::SCB">SCB</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.get_priority" class="method"><a class="src rightside" href="../src/cortex_m/peripheral/scb.rs.html#960">source</a><h4 class="code-header">pub fn <a href="#method.get_priority" class="fn">get_priority</a>(system_handler: <a class="enum" href="../cortex_m/peripheral/scb/enum.SystemHandler.html" title="enum cortex_m::peripheral::scb::SystemHandler">SystemHandler</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.u8.html">u8</a></h4></section></summary><div class="docblock"><p>Returns the hardware priority of <code>system_handler</code></p>
<p><em>NOTE</em>: Hardware priority does not exactly match logical priority levels. See
<a href="struct.NVIC.html#method.get_priority"><code>NVIC.get_priority</code></a> for more details.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.set_priority" class="method"><a class="src rightside" href="../src/cortex_m/peripheral/scb.rs.html#1005">source</a><h4 class="code-header">pub unsafe fn <a href="#method.set_priority" class="fn">set_priority</a>(&amp;mut self, system_handler: <a class="enum" href="../cortex_m/peripheral/scb/enum.SystemHandler.html" title="enum cortex_m::peripheral::scb::SystemHandler">SystemHandler</a>, prio: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.u8.html">u8</a>)</h4></section></summary><div class="docblock"><p>Sets the hardware priority of <code>system_handler</code> to <code>prio</code></p>
<p><em>NOTE</em>: Hardware priority does not exactly match logical priority levels. See
<a href="struct.NVIC.html#method.get_priority"><code>NVIC.get_priority</code></a> for more details.</p>
<p>On ARMv6-M, updating a system handler priority requires a read-modify-write operation. On
ARMv7-M, the operation is performed in a single, atomic write operation.</p>
<h5 id="unsafety"><a class="doc-anchor" href="#unsafety">§</a>Unsafety</h5>
<p>Changing priority levels can break priority-based critical sections (see
<a href="../cortex_m/register/basepri/index.html" title="mod cortex_m::register::basepri"><code>register::basepri</code></a>) and compromise memory safety.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.enable" class="method"><a class="src rightside" href="../src/cortex_m/peripheral/scb.rs.html#1062">source</a><h4 class="code-header">pub fn <a href="#method.enable" class="fn">enable</a>(&amp;mut self, exception: <a class="enum" href="../cortex_m/peripheral/scb/enum.Exception.html" title="enum cortex_m::peripheral::scb::Exception">Exception</a>)</h4></section></summary><div class="docblock"><p>Enable the exception</p>
<p>If the exception is enabled, when the exception is triggered, the exception handler will be executed instead of the
HardFault handler.
This function is only allowed on the following exceptions:</p>
<ul>
<li><code>MemoryManagement</code></li>
<li><code>BusFault</code></li>
<li><code>UsageFault</code></li>
<li><code>SecureFault</code> (can only be enabled from Secure state)</li>
</ul>
<p>Calling this function with any other exception will do nothing.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.disable" class="method"><a class="src rightside" href="../src/cortex_m/peripheral/scb.rs.html#1083">source</a><h4 class="code-header">pub fn <a href="#method.disable" class="fn">disable</a>(&amp;mut self, exception: <a class="enum" href="../cortex_m/peripheral/scb/enum.Exception.html" title="enum cortex_m::peripheral::scb::Exception">Exception</a>)</h4></section></summary><div class="docblock"><p>Disable the exception</p>
<p>If the exception is disabled, when the exception is triggered, the HardFault handler will be executed instead of the
exception handler.
This function is only allowed on the following exceptions:</p>
<ul>
<li><code>MemoryManagement</code></li>
<li><code>BusFault</code></li>
<li><code>UsageFault</code></li>
<li><code>SecureFault</code> (can not be changed from Non-secure state)</li>
</ul>
<p>Calling this function with any other exception will do nothing.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.is_enabled" class="method"><a class="src rightside" href="../src/cortex_m/peripheral/scb.rs.html#1102">source</a><h4 class="code-header">pub fn <a href="#method.is_enabled" class="fn">is_enabled</a>(&amp;self, exception: <a class="enum" href="../cortex_m/peripheral/scb/enum.Exception.html" title="enum cortex_m::peripheral::scb::Exception">Exception</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Check if an exception is enabled</p>
<p>This function is only allowed on the following exception:</p>
<ul>
<li><code>MemoryManagement</code></li>
<li><code>BusFault</code></li>
<li><code>UsageFault</code></li>
<li><code>SecureFault</code> (can not be read from Non-secure state)</li>
</ul>
<p>Calling this function with any other exception will read <code>false</code>.</p>
</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-SCB-7" class="impl"><a class="src rightside" href="../src/cortex_m/peripheral/mod.rs.html#608">source</a><a href="#impl-SCB-7" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.SCB.html" title="struct rp2040_pac::SCB">SCB</a></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedconstant.PTR" class="associatedconstant"><a class="src rightside" href="../src/cortex_m/peripheral/mod.rs.html#610">source</a><h4 class="code-header">pub const <a href="#associatedconstant.PTR" class="constant">PTR</a>: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.pointer.html">*const </a><a class="struct" href="../cortex_m/peripheral/scb/struct.RegisterBlock.html" title="struct cortex_m::peripheral::scb::RegisterBlock">RegisterBlock</a> = {0xe000ed04 as *const cortex_m::peripheral::scb::RegisterBlock}</h4></section></summary><div class="docblock"><p>Pointer to the register block</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ptr" class="method"><a class="src rightside" href="../src/cortex_m/peripheral/mod.rs.html#615">source</a><h4 class="code-header">pub const fn <a href="#method.ptr" class="fn">ptr</a>() -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.pointer.html">*const </a><a class="struct" href="../cortex_m/peripheral/scb/struct.RegisterBlock.html" title="struct cortex_m::peripheral::scb::RegisterBlock">RegisterBlock</a></h4></section><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 0.7.5: Use the associated constant <code>PTR</code> instead</span></div></span></summary><div class="docblock"><p>Returns a pointer to the register block</p>
</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-Deref-for-SCB" class="impl"><a class="src rightside" href="../src/cortex_m/peripheral/mod.rs.html#620">source</a><a href="#impl-Deref-for-SCB" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a> for <a class="struct" href="struct.SCB.html" title="struct rp2040_pac::SCB">SCB</a></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Target" class="associatedtype trait-impl"><a class="src rightside" href="../src/cortex_m/peripheral/mod.rs.html#621">source</a><a href="#associatedtype.Target" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.82.0/core/ops/deref/trait.Deref.html#associatedtype.Target" class="associatedtype">Target</a> = <a class="struct" href="../cortex_m/peripheral/scb/struct.RegisterBlock.html" title="struct cortex_m::peripheral::scb::RegisterBlock">RegisterBlock</a></h4></section></summary><div class='docblock'>The resulting type after dereferencing.</div></details><details class="toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl"><a class="src rightside" href="../src/cortex_m/peripheral/mod.rs.html#624">source</a><a href="#method.deref" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.82.0/core/ops/deref/trait.Deref.html#tymethod.deref" class="fn">deref</a>(&amp;self) -&gt; &amp;&lt;<a class="struct" href="struct.SCB.html" title="struct rp2040_pac::SCB">SCB</a> as <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/1.82.0/core/ops/deref/trait.Deref.html#associatedtype.Target" title="type core::ops::deref::Deref::Target">Target</a></h4></section></summary><div class='docblock'>Dereferences the value.</div></details></div></details><section id="impl-Send-for-SCB" class="impl"><a class="src rightside" href="../src/cortex_m/peripheral/mod.rs.html#606">source</a><a href="#impl-Send-for-SCB" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.SCB.html" title="struct rp2040_pac::SCB">SCB</a></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-SCB" class="impl"><a href="#impl-Freeze-for-SCB" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.SCB.html" title="struct rp2040_pac::SCB">SCB</a></h3></section><section id="impl-RefUnwindSafe-for-SCB" class="impl"><a href="#impl-RefUnwindSafe-for-SCB" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.SCB.html" title="struct rp2040_pac::SCB">SCB</a></h3></section><section id="impl-Sync-for-SCB" class="impl"><a href="#impl-Sync-for-SCB" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/1.82.0/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.SCB.html" title="struct rp2040_pac::SCB">SCB</a></h3></section><section id="impl-Unpin-for-SCB" class="impl"><a href="#impl-Unpin-for-SCB" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.SCB.html" title="struct rp2040_pac::SCB">SCB</a></h3></section><section id="impl-UnwindSafe-for-SCB" class="impl"><a href="#impl-UnwindSafe-for-SCB" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.SCB.html" title="struct rp2040_pac::SCB">SCB</a></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.82.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.82.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.82.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.82.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.82.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.82.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.82.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.82.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.82.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.82.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.82.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.82.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.82.0/core/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.82.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.82.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.82.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.82.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.82.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.82.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.82.0/core/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.82.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-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.82.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.82.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.82.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.82.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.82.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.82.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.82.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.82.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.82.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.82.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-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.82.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.82.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.82.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.82.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.82.0/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/1.82.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.82.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.82.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.82.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.82.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.82.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.82.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.82.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.82.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.82.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.82.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.82.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.82.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.82.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.82.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.82.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.82.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.82.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></section></div></main></body></html>