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

26 lines
19 KiB
HTML
Raw Normal View History

2023-08-23 08:44:29 +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="Critical section token."><title>CriticalSection 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-cb6f1f67f1bcd037.css" id="mainThemeStyle"><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.73.0-nightly (8131b9774 2023-08-02)" data-channel="nightly" data-search-js="search-6dfdfced5eff6596.js" data-settings-js="settings-de11bff964e9d4e5.js" data-settings-css="settings-8c76f75bfb6bd192.css" data-theme-light-css="light-6d2c9675f3d09c26.css" data-theme-dark-css="dark-45ceb8f2e522f4d1.css" data-theme-ayu-css="ayu-fd19013d6ce078bf.css" ><script src="../static.files/storage-db41da1a38ea3cb8.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-0795b7d26be81095.js"></script><noscript><link rel="stylesheet" media="(prefers-color-scheme:light)" href="../static.files/light-6d2c9675f3d09c26.css"><link rel="stylesheet" media="(prefers-color-scheme:dark)" href="../static.files/dark-45ceb8f2e522f4d1.css"><link rel="stylesheet" href="../static.files/noscript-cffde32267a19fd6.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><h2></h2></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="#">CriticalSection</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.new">new</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-CriticalSection%3C'cs%3E">Clone</a></li><li><a href="#impl-Copy-for-CriticalSection%3C'cs%3E">Copy</a></li><li><a href="#impl-Debug-for-CriticalSection%3C'cs%3E">Debug</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-CriticalSection%3C'cs%3E">RefUnwindSafe</a></li><li><a href="#impl-Send-for-CriticalSection%3C'cs%3E">Send</a></li><li><a href="#impl-Sync-for-CriticalSection%3C'cs%3E">Sync</a></li><li><a href="#impl-Unpin-for-CriticalSection%3C'cs%3E">Unpin</a></li><li><a href="#impl-UnwindSafe-for-CriticalSection%3C'cs%3E">UnwindSaf
<p>An instance of this type indicates that the current thread is executing code within a critical
section.</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-CriticalSection%3C'cs%3E" class="impl"><a class="src rightside" href="../src/critical_section/lib.rs.html#21-45">source</a><a href="#impl-CriticalSection%3C'cs%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'cs&gt; <a class="struct" href="struct.CriticalSection.html" title="struct critical_section::CriticalSection">CriticalSection</a>&lt;'cs&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.new" class="method"><a class="src rightside" href="../src/critical_section/lib.rs.html#40-44">source</a><h4 class="code-header">pub unsafe fn <a href="#method.new" class="fn">new</a>() -&gt; Self</h4></section></summary><div class="docblock"><p>Creates a critical section token.</p>
<p>This method is meant to be used to create safe abstractions rather than being directly used
in applications.</p>
<h5 id="safety"><a href="#safety">Safety</a></h5>
<p>This must only be called when the current thread is in a critical section. The caller must
ensure that the returned instance will not live beyond the end of the critical section.</p>
<p>The caller must use adequate fences to prevent the compiler from moving the
instructions inside the critical section to the outside of it. Sequentially consistent fences are
suggested immediately after entry and immediately before exit from the critical section.</p>
<p>Note that the lifetime <code>'cs</code> of the returned instance is unconstrained. User code must not
be able to influence the lifetime picked for this type, since that might cause it to be
inferred to <code>'static</code>.</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-CriticalSection%3C'cs%3E" class="impl"><a class="src rightside" href="../src/critical_section/lib.rs.html#16">source</a><a href="#impl-Clone-for-CriticalSection%3C'cs%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'cs&gt; Clone for <a class="struct" href="struct.CriticalSection.html" title="struct critical_section::CriticalSection">CriticalSection</a>&lt;'cs&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../src/critical_section/lib.rs.html#16">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.CriticalSection.html" title="struct critical_section::CriticalSection">CriticalSection</a>&lt;'cs&gt;</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-CriticalSection%3C'cs%3E" class="impl"><a class="src rightside" href="../src/critical_section/lib.rs.html#16">source</a><a href="#impl-Debug-for-CriticalSection%3C'cs%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'cs&gt; Debug for <a class="struct" href="struct.CriticalSection.html" title="struct critical_section::CriticalSection">CriticalSection</a>&lt;'cs&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../src/critical_section/lib.rs.html#16">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-CriticalSection%3C'cs%3E" class="impl"><a class="src rightside" href="../src/critical_section/lib.rs.html#16">source</a><a href="#impl-Copy-for-CriticalSection%3C'cs%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'cs&gt; Copy for <a class="struct" href="struct.CriticalSection.html" title="struct critical_section::CriticalSection">CriticalSection</a>&lt;'cs&gt;</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-CriticalSection%3C'cs%3E" class="impl"><a href="#impl-RefUnwindSafe-for-CriticalSection%3C'cs%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'cs&gt; RefUnwindSafe for <a class="struct" href="struct.CriticalSection.html" title="struct critical_section::CriticalSection">CriticalSection</a>&lt;'cs&gt;</h3></section><section id="impl-Send-for-CriticalSection%3C'cs%3E" class="impl"><a href="#impl-Send-for-CriticalSection%3C'cs%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'cs&gt; Send for <a class="struct" href="struct.CriticalSection.html" title="struct critical_section::CriticalSection">CriticalSection</a>&lt;'cs&gt;</h3></section><section id="impl-Sync-for-CriticalSection%3C'cs%3E" class="impl"><
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-CriticalSection%3C'cs%3E" class="impl"><a href="#impl-Borrow%3CT%3E-for-CriticalSection%3C'cs%3E" 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-CriticalSection%3C'cs%3E" class="impl"><a href="#impl-BorrowMut%3CT%3E-for-CriticalSection%3C'cs%3E" 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-CriticalSection%3C'cs%3E" class="impl"><a href="#impl-From%3CT%3E-for-CriticalSection%3C'cs%3E" 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-CriticalSection%3C'cs%3E" class="impl"><a href="#impl-Into%3CU%3E-for-CriticalSection%3C'cs%3E" 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-CriticalSection%3C'cs%3E" class="impl"><a href="#impl-TryFrom%3CU%3E-for-CriticalSection%3C'cs%3E" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; TryFrom&lt;U&gt; for T<span class="where fmt-newline">where
2023-08-23 08:44:29 +02:00
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-CriticalSection%3C'cs%3E" class="impl"><a href="#impl-TryInto%3CU%3E-for-CriticalSection%3C'cs%3E" 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>