Rust-for-Arduboy/docs/doc/critical_section/struct.RestoreState.html

25 lines
18 KiB
HTML
Raw Normal View History

2023-10-11 17:42:27 +02:00
<!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="Opaque “restore state”."><title>RestoreState in critical_section - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-fa3bb1812debf86c.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="critical_section" data-themes="" data-resource-suffix="" data-rustdoc-version="1.75.0-nightly (2bbb61989 2023-10-04)" data-channel="nightly" data-search-js="search-8be46b629f5f14a8.js" data-settings-js="settings-74424d7eec62a23e.js" ><script src="../static.files/storage-fec3eaa3851e447d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c5bd66d33317d69f.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-5d8b3c7633ad77ba.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc 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">&#9776;</button><a class="logo-container" href="../critical_section/index.html"><img class="rust-logo" src="../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a></nav><nav class="sidebar"><a class="logo-container" href="../critical_section/index.html"><img class="rust-logo" src="../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a><h2 class="location"><a href="#">RestoreState</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.invalid">invalid</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-RestoreState">Clone</a></li><li><a href="#impl-Copy-for-RestoreState">Copy</a></li><li><a href="#impl-Debug-for-RestoreState">Debug</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-RestoreState">RefUnwindSafe</a></li><li><a href="#impl-Send-for-RestoreState">Send</a></li><li><a href="#impl-Sync-for-RestoreState">Sync</a></li><li><a href="#impl-Unpin-for-RestoreState">Unpin</a></li><li><a href="#impl-UnwindSafe-for-RestoreState">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-RestoreState">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-RestoreState">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-RestoreState">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-RestoreState">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-RestoreState">Into&lt;U&gt;</a></li><li><a href="#impl-TryFrom%3CU%3E-for-RestoreState">TryFrom&lt;U&gt;</a></li
<p>Implementations use this to “carry over” information between acquiring and releasing
a critical section. For example, when nesting two critical sections of an
implementation that disables interrupts globally, acquiring the inner one wont disable
the interrupts since theyre already disabled. The impl would use the restore state to “tell”
the corresponding release that it does <em>not</em> have to reenable interrupts yet, only the
outer release should do so.</p>
<p>User code uses <a href="struct.RestoreState.html" title="struct critical_section::RestoreState"><code>RestoreState</code></a> opaquely, critical section implementations
use <a href="type.RawRestoreState.html" title="type critical_section::RawRestoreState"><code>RawRestoreState</code></a> so that they can use the inner value.</p>
</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-RestoreState" class="impl"><a class="src rightside" href="../src/critical_section/lib.rs.html#124-157">source</a><a href="#impl-RestoreState" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.RestoreState.html" title="struct critical_section::RestoreState">RestoreState</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.invalid" class="method"><a class="src rightside" href="../src/critical_section/lib.rs.html#132-156">source</a><h4 class="code-header">pub const fn <a href="#method.invalid" class="fn">invalid</a>() -&gt; Self</h4></section></summary><div class="docblock"><p>Create an invalid, dummy <code>RestoreState</code>.</p>
<p>This can be useful to avoid <code>Option</code> when storing a <code>RestoreState</code> in a
struct field, or a <code>static</code>.</p>
<p>Note that due to the safety contract of <a href="fn.acquire.html" title="fn critical_section::acquire"><code>acquire</code></a>/<a href="fn.release.html" title="fn critical_section::release"><code>release</code></a>, you must not pass
a <code>RestoreState</code> obtained from this method to <a href="fn.release.html" title="fn critical_section::release"><code>release</code></a>.</p>
</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-RestoreState" class="impl"><a class="src rightside" href="../src/critical_section/lib.rs.html#121">source</a><a href="#impl-Clone-for-RestoreState" class="anchor">§</a><h3 class="code-header">impl Clone for <a class="struct" href="struct.RestoreState.html" title="struct critical_section::RestoreState">RestoreState</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../src/critical_section/lib.rs.html#121">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.RestoreState.html" title="struct critical_section::RestoreState">RestoreState</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="since rightside" title="Stable since Rust version 1.0.0">1.0.0</span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a class="fn">clone_from</a>(&amp;mut self, source: &amp;Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-RestoreState" class="impl"><a class="src rightside" href="../src/critical_section/lib.rs.html#121">source</a><a href="#impl-Debug-for-RestoreState" class="anchor">§</a><h3 class="code-header">impl Debug for <a class="struct" href="struct.RestoreState.html" title="struct critical_section::RestoreState">RestoreState</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../src/critical_section/lib.rs.html#121">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a class="fn">fmt</a>(&amp;self, f: &amp;mut Formatter&lt;'_&gt;) -&gt; Result</h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a>Read more</a></div></details></div></details><section id="impl-Copy-for-RestoreState" class="impl"><a class="src rightside" href="../src/critical_section/lib.rs.html#121">source</a><a href="#impl-Copy-for-RestoreState" class="anchor">§</a><h3 class="code-header">impl Copy for <a class="struct" href="struct.RestoreState.html" title="struct critical_section::RestoreState">RestoreState</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-RestoreState" class="impl"><a href="#impl-RefUnwindSafe-for-RestoreState" class="anchor">§</a><h3 class="code-header">impl RefUnwindSafe for <a class="struct" href="struct.RestoreState.html" title="struct critical_section::RestoreState">RestoreState</a></h3></section><section id="impl-Send-for-RestoreState" class="impl"><a href="#impl-Send-for-RestoreState" class="anchor">§</a><h3 class="code-header">impl Send for <a class="struct" href="struct.RestoreState.html" title="struct critical_section::RestoreState">RestoreState</a></h3></section><section id="impl-Sync-for-RestoreState" class="impl"><a href="#impl-Sync-for-RestoreState" class="anchor">§</a><h3 class="code-header">impl Sync for <a class="struct" href="struct.RestoreState.html" title="struct critical_section::RestoreState">RestoreState</a></h3></section><section id="impl-Unpin-for-RestoreState" class="impl"><a href="#impl-Unpin-for
T: 'static + ?Sized,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a class="fn">type_id</a>(&amp;self) -&gt; TypeId</h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-RestoreState" class="impl"><a href="#impl-Borrow%3CT%3E-for-RestoreState" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; Borrow&lt;T&gt; for T<span class="where fmt-newline">where
T: ?Sized,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a class="fn">borrow</a>(&amp;self) -&gt; &amp;T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-RestoreState" class="impl"><a href="#impl-BorrowMut%3CT%3E-for-RestoreState" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; BorrowMut&lt;T&gt; for T<span class="where fmt-newline">where
T: ?Sized,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a class="fn">borrow_mut</a>(&amp;mut self) -&gt; &amp;mut T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a>Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-RestoreState" class="impl"><a href="#impl-From%3CT%3E-for-RestoreState" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; From&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 href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a 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-RestoreState" class="impl"><a href="#impl-Into%3CU%3E-for-RestoreState" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; Into&lt;U&gt; for T<span class="where fmt-newline">where
U: From&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a 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>[From]&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-RestoreState" class="impl"><a href="#impl-TryFrom%3CU%3E-for-RestoreState" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; TryFrom&lt;U&gt; for T<span class="where fmt-newline">where
U: Into&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Error</a> = Infallible</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 href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a class="fn">try_from</a>(value: U) -&gt; Result&lt;T, &lt;T as TryFrom&lt;U&gt;&gt;::Error&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-RestoreState" class="impl"><a href="#impl-TryInto%3CU%3E-for-RestoreState" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; TryInto&lt;U&gt; for T<span class="where fmt-newline">where
U: TryFrom&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a class="associatedtype">Error</a> = &lt;U as TryFrom&lt;T&gt;&gt;::Error</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 href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a class="fn">try_into</a>(self) -&gt; Result&lt;U, &lt;U as TryFrom&lt;T&gt;&gt;::Error&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>