rtic/2/api/rtic_core/trait.Mutex.html
2024-10-24 05:57:30 +00:00

14 lines
No EOL
9 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="Memory safe access to shared resources"><title>Mutex in rtic_core - 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="rtic_core" 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="icon" href="https://raw.githubusercontent.com/rtic-rs/cortex-m-rtic/master/book/en/src/RTIC.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button><a class="logo-container" href="../rtic_core/index.html"><img src="https://raw.githubusercontent.com/rtic-rs/cortex-m-rtic/master/book/en/src/RTIC.svg" alt=""></a></nav><nav class="sidebar"><div class="sidebar-crate"><a class="logo-container" href="../rtic_core/index.html"><img src="https://raw.githubusercontent.com/rtic-rs/cortex-m-rtic/master/book/en/src/RTIC.svg" alt="logo"></a><h2><a href="../rtic_core/index.html">rtic_<wbr>core</a><span class="version">1.0.0</span></h2></div><h2 class="location"><a href="#">Mutex</a></h2><div class="sidebar-elems"><section><h3><a href="#required-associated-types">Required Associated Types</a></h3><ul class="block"><li><a href="#associatedtype.T">T</a></li></ul><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.lock">lock</a></li></ul><h3><a href="#foreign-impls">Implementations on Foreign Types</a></h3><ul class="block"><li><a href="#impl-Mutex-for-%26mut+M">&#38;&#39;a mut M</a></li></ul><h3><a href="#object-safety">Object Safety</a></h3><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In crate rtic_<wbr>core</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>Trait <a href="index.html">rtic_core</a>::<wbr><a class="trait" href="#">Mutex</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/rtic_core/lib.rs.html#31-37">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub trait Mutex {
type <a href="#associatedtype.T" class="associatedtype">T</a>;
// Required method
fn <a href="#tymethod.lock" class="fn">lock</a>&lt;R&gt;(&amp;mut self, f: impl <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(&amp;mut Self::<a class="associatedtype" href="trait.Mutex.html#associatedtype.T" title="type rtic_core::Mutex::T">T</a>) -&gt; R) -&gt; R;
}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Memory safe access to shared resources</p>
<p>In RTIC, locks are implemented as critical sections that prevent other tasks from <em>starting</em>.
These critical sections are implemented by temporarily increasing the dynamic priority of the
current context. Entering and leaving these critical sections is always done in bounded constant
time (a few instructions in bare metal contexts).</p>
</div></details><h2 id="required-associated-types" class="section-header">Required Associated Types<a href="#required-associated-types" class="anchor">§</a></h2><div class="methods"><details class="toggle" open><summary><section id="associatedtype.T" class="method"><a class="src rightside" href="../src/rtic_core/lib.rs.html#33">source</a><h4 class="code-header">type <a href="#associatedtype.T" class="associatedtype">T</a></h4></section></summary><div class="docblock"><p>Data protected by the mutex</p>
</div></details></div><h2 id="required-methods" class="section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="tymethod.lock" class="method"><a class="src rightside" href="../src/rtic_core/lib.rs.html#36">source</a><h4 class="code-header">fn <a href="#tymethod.lock" class="fn">lock</a>&lt;R&gt;(&amp;mut self, f: impl <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(&amp;mut Self::<a class="associatedtype" href="trait.Mutex.html#associatedtype.T" title="type rtic_core::Mutex::T">T</a>) -&gt; R) -&gt; R</h4></section></summary><div class="docblock"><p>Creates a critical section and grants temporary access to the protected data</p>
</div></details></div><h2 id="object-safety" class="section-header">Object Safety<a href="#object-safety" class="anchor">§</a></h2><div class="object-safety-info">This trait is <b>not</b> <a href="https://doc.rust-lang.org/1.82.0/reference/items/traits.html#object-safety">object safe</a>.</div><h2 id="foreign-impls" class="section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-Mutex-for-%26mut+M" class="impl"><a class="src rightside" href="../src/rtic_core/lib.rs.html#39-48">source</a><a href="#impl-Mutex-for-%26mut+M" class="anchor">§</a><h3 class="code-header">impl&lt;'a, M&gt; <a class="trait" href="trait.Mutex.html" title="trait rtic_core::Mutex">Mutex</a> for <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.reference.html">&amp;'a mut M</a><div class="where">where
M: <a class="trait" href="trait.Mutex.html" title="trait rtic_core::Mutex">Mutex</a>,</div></h3></section></summary><div class="impl-items"><section id="associatedtype.T-1" class="associatedtype trait-impl"><a class="src rightside" href="../src/rtic_core/lib.rs.html#43">source</a><a href="#associatedtype.T-1" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.T" class="associatedtype">T</a> = &lt;M as <a class="trait" href="trait.Mutex.html" title="trait rtic_core::Mutex">Mutex</a>&gt;::<a class="associatedtype" href="trait.Mutex.html#associatedtype.T" title="type rtic_core::Mutex::T">T</a></h4></section><section id="method.lock" class="method trait-impl"><a class="src rightside" href="../src/rtic_core/lib.rs.html#45-47">source</a><a href="#method.lock" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.lock" class="fn">lock</a>&lt;R&gt;(&amp;mut self, f: impl <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(&amp;mut M::<a class="associatedtype" href="trait.Mutex.html#associatedtype.T" title="type rtic_core::Mutex::T">T</a>) -&gt; R) -&gt; R</h4></section></div></details><h2 id="implementors" class="section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><details class="toggle implementors-toggle"><summary><section id="impl-Mutex-for-Exclusive%3C'a,+T%3E" class="impl"><a class="src rightside" href="../src/rtic_core/lib.rs.html#55-61">source</a><a href="#impl-Mutex-for-Exclusive%3C'a,+T%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a, T&gt; <a class="trait" href="trait.Mutex.html" title="trait rtic_core::Mutex">Mutex</a> for <a class="struct" href="struct.Exclusive.html" title="struct rtic_core::Exclusive">Exclusive</a>&lt;'a, T&gt;</h3></section></summary><div class="impl-items"><section id="associatedtype.T-2" class="associatedtype trait-impl"><a class="src rightside" href="../src/rtic_core/lib.rs.html#56">source</a><a href="#associatedtype.T-2" class="anchor">§</a><h4 class="code-header">type <a href="#associatedtype.T" class="associatedtype">T</a> = T</h4></section></div></details></div><script src="../trait.impl/rtic_core/trait.Mutex.js" async></script></section></div></main></body></html>