mirror of
https://github.com/rtic-rs/rtic.git
synced 2024-12-26 11:59:33 +01:00
216 lines
57 KiB
HTML
216 lines
57 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-b0742ba02757f159.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.83.0 (90b35a623 2024-11-26)" data-channel="1.83.0" data-search-js="search-f0d225181b97f9a4.js" data-settings-js="settings-805db61a62df4bd2.js" ><script src="../static.files/storage-1d39b6787ed640ff.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-f070b9041d14864c.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-0111fcff984fae8f.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><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">SCB</a></h2><h3><a href="#implementations">Associated Constants</a></h3><ul class="block associatedconstant"><li><a href="#associatedconstant.PTR" title="PTR">PTR</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.clean_dcache" title="clean_dcache">clean_dcache</a></li><li><a href="#method.clean_dcache_by_address" title="clean_dcache_by_address">clean_dcache_by_address</a></li><li><a href="#method.clean_dcache_by_ref" title="clean_dcache_by_ref">clean_dcache_by_ref</a></li><li><a href="#method.clean_dcache_by_slice" title="clean_dcache_by_slice">clean_dcache_by_slice</a></li><li><a href="#method.clean_invalidate_dcache" title="clean_invalidate_dcache">clean_invalidate_dcache</a></li><li><a href="#method.clean_invalidate_dcache_by_address" title="clean_invalidate_dcache_by_address">clean_invalidate_dcache_by_address</a></li><li><a href="#method.clear_pendst" title="clear_pendst">clear_pendst</a></li><li><a href="#method.clear_pendsv" title="clear_pendsv">clear_pendsv</a></li><li><a href="#method.clear_sleepdeep" title="clear_sleepdeep">clear_sleepdeep</a></li><li><a href="#method.clear_sleeponexit" title="clear_sleeponexit">clear_sleeponexit</a></li><li><a href="#method.dcache_enabled" title="dcache_enabled">dcache_enabled</a></li><li><a href="#method.disable" title="disable">disable</a></li><li><a href="#method.disable_dcache" title="disable_dcache">disable_dcache</a></li><li><a href="#method.disable_icache" title="disable_icache">disable_icache</a></li><li><a href="#method.enable" title="enable">enable</a></li><li><a href="#method.enable_dcache" title="enable_dcache">enable_dcache</a></li><li><a href="#method.enable_icache" title="enable_icache">enable_icache</a></li><li><a href="#method.get_priority" title="get_priority">get_priority</a></li><li><a href="#method.icache_enabled" title="icache_enabled">icache_enabled</a></li><li><a href="#me
|
||
|
</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>() -> <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>(&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>(&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>() -> <a class="primitive" href="https://doc.rust-lang.org/1.83.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>(&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>(&mut self, cpuid: &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>(&mut self, cpuid: &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>() -> <a class="primitive" href="https://doc.rust-lang.org/1.83.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>(&mut self, cpuid: &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>(&mut self, cpuid: &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>(&mut self, addr: <a class="primitive" href="https://doc.rust-lang.org/1.83.0/core/primitive.usize.html">usize</a>, size: <a class="primitive" href="https://doc.rust-lang.org/1.83.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><T>(&mut self, obj: <a class="primitive" href="https://doc.rust-lang.org/1.83.0/core/primitive.reference.html">&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><T>(&mut self, slice: &mut <a class="primitive" href="https://doc.rust-lang.org/1.83.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>(&mut self, addr: <a class="primitive" href="https://doc.rust-lang.org/1.83.0/core/primitive.usize.html">usize</a>, size: <a class="primitive" href="https://doc.rust-lang.org/1.83.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><T>(&mut self, obj: <a class="primitive" href="https://doc.rust-lang.org/1.83.0/core/primitive.reference.html">&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><T>(&mut self, slice: &<a class="primitive" href="https://doc.rust-lang.org/1.83.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>(&mut self, addr: <a class="primitive" href="https://doc.rust-lang.org/1.83.0/core/primitive.usize.html">usize</a>, size: <a class="primitive" href="https://doc.rust-lang.org/1.83.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>(&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>(&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>(&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>(&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>() -> <a class="primitive" href="https://doc.rust-lang.org/1.83.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>() -> <a class="primitive" href="https://doc.rust-lang.org/1.83.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>() -> <a class="primitive" href="https://doc.rust-lang.org/1.83.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>) -> <a class="primitive" href="https://doc.rust-lang.org/1.83.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>(&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.83.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>(&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>(&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>(&self, exception: <a class="enum" href="../cortex_m/peripheral/scb/enum.Exception.html" title="enum cortex_m::peripheral::scb::Exception">Exception</a>) -> <a class="primitive" href="https://doc.rust-lang.org/1.83.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.83.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>() -> <a class="primitive" href="https://doc.rust-lang.org/1.83.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.83.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.83.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.83.0/core/ops/deref/trait.Deref.html#tymethod.deref" class="fn">deref</a>(&self) -> &<<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.83.0/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/1.83.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.83.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.83.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.83.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.83.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
|
||
|
T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.83.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.83.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.83.0/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/1.83.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.83.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.83.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<T> <a class="trait" href="https://doc.rust-lang.org/1.83.0/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<div class="where">where
|
||
|
T: ?<a class="trait" href="https://doc.rust-lang.org/1.83.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.83.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.83.0/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/1.83.0/core/primitive.reference.html">&T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/1.83.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.83.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<T> <a class="trait" href="https://doc.rust-lang.org/1.83.0/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<div class="where">where
|
||
|
T: ?<a class="trait" href="https://doc.rust-lang.org/1.83.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.83.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.83.0/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/1.83.0/core/primitive.reference.html">&mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/1.83.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.83.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<T> <a class="trait" href="https://doc.rust-lang.org/1.83.0/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> 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.83.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.83.0/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> 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.83.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<T, U> <a class="trait" href="https://doc.rust-lang.org/1.83.0/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<div class="where">where
|
||
|
U: <a class="trait" href="https://doc.rust-lang.org/1.83.0/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</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.83.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.83.0/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> 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.83.0/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> 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.83.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<T, U> <a class="trait" href="https://doc.rust-lang.org/1.83.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<div class="where">where
|
||
|
U: <a class="trait" href="https://doc.rust-lang.org/1.83.0/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</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.83.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.83.0/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/1.83.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.83.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.83.0/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/1.83.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/1.83.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/1.83.0/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></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.83.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<T, U> <a class="trait" href="https://doc.rust-lang.org/1.83.0/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<div class="where">where
|
||
|
U: <a class="trait" href="https://doc.rust-lang.org/1.83.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</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.83.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.83.0/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/1.83.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/1.83.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.83.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.83.0/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/1.83.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/1.83.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/1.83.0/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
|