This commit is contained in:
2020-01-23 23:13:36 -08:00
parent dcc0df955e
commit 2bc9ebdc6b
31829 changed files with 1229378 additions and 17 deletions

View File

@@ -0,0 +1,3 @@
<!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="List of all items in this crate"><meta name="keywords" content="rust, rustlang, rust-lang"><title>List of all items in this crate</title><link rel="stylesheet" type="text/css" href="../normalize.css"><link rel="stylesheet" type="text/css" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../dark.css"><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><script src="../storage.js"></script><noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="shortcut icon" href="../favicon.ico"><style type="text/css">#crate-search{background-image:url("../down-arrow.svg");}</style></head><body class="rustdoc mod"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../crossbeam_epoch/index.html'><div class='logo-container'><img src='../rust-logo.png' alt='logo'></div></a></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../theme.js"></script><nav class="sub"><form class="search-form js-only"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../settings.html"><img src="../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><span class='out-of-band'><span id='render-detail'><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class='inner'>&#x2212;</span>]</a></span>
</span>
<span class='in-band'>List of all items</span></h1><h3 id='Structs'>Structs</h3><ul class='structs docblock'><li><a href='struct.Atomic.html'>Atomic</a></li><li><a href='struct.Collector.html'>Collector</a></li><li><a href='struct.CompareAndSetError.html'>CompareAndSetError</a></li><li><a href='struct.Guard.html'>Guard</a></li><li><a href='struct.LocalHandle.html'>LocalHandle</a></li><li><a href='struct.Owned.html'>Owned</a></li><li><a href='struct.Shared.html'>Shared</a></li></ul><h3 id='Traits'>Traits</h3><ul class='traits docblock'><li><a href='trait.CompareAndSetOrdering.html'>CompareAndSetOrdering</a></li><li><a href='trait.Pointer.html'>Pointer</a></li></ul><h3 id='Functions'>Functions</h3><ul class='functions docblock'><li><a href='fn.default_collector.html'>default_collector</a></li><li><a href='fn.is_pinned.html'>is_pinned</a></li><li><a href='fn.pin.html'>pin</a></li><li><a href='fn.unprotected.html'>unprotected</a></li></ul></section><section id="search" class="content hidden"></section><section class="footer"></section><aside id="help" class="hidden"><div><h1 class="hidden">Help</h1><div class="shortcuts"><h2>Keyboard Shortcuts</h2><dl><dt><kbd>?</kbd></dt><dd>Show this help dialog</dd><dt><kbd>S</kbd></dt><dd>Focus the search field</dd><dt><kbd></kbd></dt><dd>Move up in search results</dd><dt><kbd></kbd></dt><dd>Move down in search results</dd><dt><kbd></kbd></dt><dd>Switch tab</dd><dt><kbd>&#9166;</kbd></dt><dd>Go to active search result</dd><dt><kbd>+</kbd></dt><dd>Expand all sections</dd><dt><kbd>-</kbd></dt><dd>Collapse all sections</dd></dl></div><div class="infos"><h2>Search Tricks</h2><p>Prefix searches with a type followed by a colon (e.g., <code>fn:</code>) to restrict the search to a given type.</p><p>Accepted types are: <code>fn</code>, <code>mod</code>, <code>struct</code>, <code>enum</code>, <code>trait</code>, <code>type</code>, <code>macro</code>, and <code>const</code>.</p><p>Search functions by type signature (e.g., <code>vec -> usize</code> or <code>* -> vec</code>)</p><p>Search multiple things at once by splitting your query with comma (e.g., <code>str,u8</code> or <code>String,struct:Vec,test</code>)</p></div></div></aside><script>window.rootPath = "../";window.currentCrate = "crossbeam_epoch";</script><script src="../aliases.js"></script><script src="../main.js"></script><script defer src="../search-index.js"></script></body></html>

View File

@@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../crossbeam_epoch/struct.Atomic.html">
</head>
<body>
<p>Redirecting to <a href="../../crossbeam_epoch/struct.Atomic.html">../../crossbeam_epoch/struct.Atomic.html</a>...</p>
<script>location.replace("../../crossbeam_epoch/struct.Atomic.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../crossbeam_epoch/struct.CompareAndSetError.html">
</head>
<body>
<p>Redirecting to <a href="../../crossbeam_epoch/struct.CompareAndSetError.html">../../crossbeam_epoch/struct.CompareAndSetError.html</a>...</p>
<script>location.replace("../../crossbeam_epoch/struct.CompareAndSetError.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../crossbeam_epoch/struct.Owned.html">
</head>
<body>
<p>Redirecting to <a href="../../crossbeam_epoch/struct.Owned.html">../../crossbeam_epoch/struct.Owned.html</a>...</p>
<script>location.replace("../../crossbeam_epoch/struct.Owned.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../crossbeam_epoch/struct.Shared.html">
</head>
<body>
<p>Redirecting to <a href="../../crossbeam_epoch/struct.Shared.html">../../crossbeam_epoch/struct.Shared.html</a>...</p>
<script>location.replace("../../crossbeam_epoch/struct.Shared.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../crossbeam_epoch/trait.CompareAndSetOrdering.html">
</head>
<body>
<p>Redirecting to <a href="../../crossbeam_epoch/trait.CompareAndSetOrdering.html">../../crossbeam_epoch/trait.CompareAndSetOrdering.html</a>...</p>
<script>location.replace("../../crossbeam_epoch/trait.CompareAndSetOrdering.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../crossbeam_epoch/trait.Pointer.html">
</head>
<body>
<p>Redirecting to <a href="../../crossbeam_epoch/trait.Pointer.html">../../crossbeam_epoch/trait.Pointer.html</a>...</p>
<script>location.replace("../../crossbeam_epoch/trait.Pointer.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../crossbeam_epoch/struct.Collector.html">
</head>
<body>
<p>Redirecting to <a href="../../crossbeam_epoch/struct.Collector.html">../../crossbeam_epoch/struct.Collector.html</a>...</p>
<script>location.replace("../../crossbeam_epoch/struct.Collector.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../crossbeam_epoch/struct.LocalHandle.html">
</head>
<body>
<p>Redirecting to <a href="../../crossbeam_epoch/struct.LocalHandle.html">../../crossbeam_epoch/struct.LocalHandle.html</a>...</p>
<script>location.replace("../../crossbeam_epoch/struct.LocalHandle.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../crossbeam_epoch/fn.default_collector.html">
</head>
<body>
<p>Redirecting to <a href="../../crossbeam_epoch/fn.default_collector.html">../../crossbeam_epoch/fn.default_collector.html</a>...</p>
<script>location.replace("../../crossbeam_epoch/fn.default_collector.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../crossbeam_epoch/fn.is_pinned.html">
</head>
<body>
<p>Redirecting to <a href="../../crossbeam_epoch/fn.is_pinned.html">../../crossbeam_epoch/fn.is_pinned.html</a>...</p>
<script>location.replace("../../crossbeam_epoch/fn.is_pinned.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../crossbeam_epoch/fn.pin.html">
</head>
<body>
<p>Redirecting to <a href="../../crossbeam_epoch/fn.pin.html">../../crossbeam_epoch/fn.pin.html</a>...</p>
<script>location.replace("../../crossbeam_epoch/fn.pin.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,2 @@
<!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="API documentation for the Rust `default_collector` fn in crate `crossbeam_epoch`."><meta name="keywords" content="rust, rustlang, rust-lang, default_collector"><title>crossbeam_epoch::default_collector - Rust</title><link rel="stylesheet" type="text/css" href="../normalize.css"><link rel="stylesheet" type="text/css" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../dark.css"><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><script src="../storage.js"></script><noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="shortcut icon" href="../favicon.ico"><style type="text/css">#crate-search{background-image:url("../down-arrow.svg");}</style></head><body class="rustdoc fn"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../crossbeam_epoch/index.html'><div class='logo-container'><img src='../rust-logo.png' alt='logo'></div></a><div class="sidebar-elems"><p class='location'><a href='index.html'>crossbeam_epoch</a></p><script>window.sidebarCurrent = {name: 'default_collector', ty: 'fn', relpath: ''};</script><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../theme.js"></script><nav class="sub"><form class="search-form js-only"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../settings.html"><img src="../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><span class='out-of-band'><span id='render-detail'><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class='inner'>&#x2212;</span>]</a></span><a class='srclink' href='../src/crossbeam_epoch/default.rs.html#33-35' title='goto source code'>[src]</a></span><span class='in-band'>Function <a href='index.html'>crossbeam_epoch</a>::<wbr><a class="fn" href=''>default_collector</a></span></h1><pre class='rust fn'>pub fn default_collector() -&gt; &amp;'static <a class="struct" href="../crossbeam_epoch/struct.Collector.html" title="struct crossbeam_epoch::Collector">Collector</a></pre><div class='docblock'><p>Returns the default global collector.</p>
</div></section><section id="search" class="content hidden"></section><section class="footer"></section><aside id="help" class="hidden"><div><h1 class="hidden">Help</h1><div class="shortcuts"><h2>Keyboard Shortcuts</h2><dl><dt><kbd>?</kbd></dt><dd>Show this help dialog</dd><dt><kbd>S</kbd></dt><dd>Focus the search field</dd><dt><kbd></kbd></dt><dd>Move up in search results</dd><dt><kbd></kbd></dt><dd>Move down in search results</dd><dt><kbd></kbd></dt><dd>Switch tab</dd><dt><kbd>&#9166;</kbd></dt><dd>Go to active search result</dd><dt><kbd>+</kbd></dt><dd>Expand all sections</dd><dt><kbd>-</kbd></dt><dd>Collapse all sections</dd></dl></div><div class="infos"><h2>Search Tricks</h2><p>Prefix searches with a type followed by a colon (e.g., <code>fn:</code>) to restrict the search to a given type.</p><p>Accepted types are: <code>fn</code>, <code>mod</code>, <code>struct</code>, <code>enum</code>, <code>trait</code>, <code>type</code>, <code>macro</code>, and <code>const</code>.</p><p>Search functions by type signature (e.g., <code>vec -> usize</code> or <code>* -> vec</code>)</p><p>Search multiple things at once by splitting your query with comma (e.g., <code>str,u8</code> or <code>String,struct:Vec,test</code>)</p></div></div></aside><script>window.rootPath = "../";window.currentCrate = "crossbeam_epoch";</script><script src="../aliases.js"></script><script src="../main.js"></script><script defer src="../search-index.js"></script></body></html>

View File

@@ -0,0 +1,2 @@
<!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="API documentation for the Rust `is_pinned` fn in crate `crossbeam_epoch`."><meta name="keywords" content="rust, rustlang, rust-lang, is_pinned"><title>crossbeam_epoch::is_pinned - Rust</title><link rel="stylesheet" type="text/css" href="../normalize.css"><link rel="stylesheet" type="text/css" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../dark.css"><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><script src="../storage.js"></script><noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="shortcut icon" href="../favicon.ico"><style type="text/css">#crate-search{background-image:url("../down-arrow.svg");}</style></head><body class="rustdoc fn"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../crossbeam_epoch/index.html'><div class='logo-container'><img src='../rust-logo.png' alt='logo'></div></a><div class="sidebar-elems"><p class='location'><a href='index.html'>crossbeam_epoch</a></p><script>window.sidebarCurrent = {name: 'is_pinned', ty: 'fn', relpath: ''};</script><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../theme.js"></script><nav class="sub"><form class="search-form js-only"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../settings.html"><img src="../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><span class='out-of-band'><span id='render-detail'><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class='inner'>&#x2212;</span>]</a></span><a class='srclink' href='../src/crossbeam_epoch/default.rs.html#28-30' title='goto source code'>[src]</a></span><span class='in-band'>Function <a href='index.html'>crossbeam_epoch</a>::<wbr><a class="fn" href=''>is_pinned</a></span></h1><pre class='rust fn'>pub fn is_pinned() -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></pre><div class='docblock'><p>Returns <code>true</code> if the current thread is pinned.</p>
</div></section><section id="search" class="content hidden"></section><section class="footer"></section><aside id="help" class="hidden"><div><h1 class="hidden">Help</h1><div class="shortcuts"><h2>Keyboard Shortcuts</h2><dl><dt><kbd>?</kbd></dt><dd>Show this help dialog</dd><dt><kbd>S</kbd></dt><dd>Focus the search field</dd><dt><kbd></kbd></dt><dd>Move up in search results</dd><dt><kbd></kbd></dt><dd>Move down in search results</dd><dt><kbd></kbd></dt><dd>Switch tab</dd><dt><kbd>&#9166;</kbd></dt><dd>Go to active search result</dd><dt><kbd>+</kbd></dt><dd>Expand all sections</dd><dt><kbd>-</kbd></dt><dd>Collapse all sections</dd></dl></div><div class="infos"><h2>Search Tricks</h2><p>Prefix searches with a type followed by a colon (e.g., <code>fn:</code>) to restrict the search to a given type.</p><p>Accepted types are: <code>fn</code>, <code>mod</code>, <code>struct</code>, <code>enum</code>, <code>trait</code>, <code>type</code>, <code>macro</code>, and <code>const</code>.</p><p>Search functions by type signature (e.g., <code>vec -> usize</code> or <code>* -> vec</code>)</p><p>Search multiple things at once by splitting your query with comma (e.g., <code>str,u8</code> or <code>String,struct:Vec,test</code>)</p></div></div></aside><script>window.rootPath = "../";window.currentCrate = "crossbeam_epoch";</script><script src="../aliases.js"></script><script src="../main.js"></script><script defer src="../search-index.js"></script></body></html>

View File

@@ -0,0 +1,2 @@
<!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="API documentation for the Rust `pin` fn in crate `crossbeam_epoch`."><meta name="keywords" content="rust, rustlang, rust-lang, pin"><title>crossbeam_epoch::pin - Rust</title><link rel="stylesheet" type="text/css" href="../normalize.css"><link rel="stylesheet" type="text/css" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../dark.css"><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><script src="../storage.js"></script><noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="shortcut icon" href="../favicon.ico"><style type="text/css">#crate-search{background-image:url("../down-arrow.svg");}</style></head><body class="rustdoc fn"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../crossbeam_epoch/index.html'><div class='logo-container'><img src='../rust-logo.png' alt='logo'></div></a><div class="sidebar-elems"><p class='location'><a href='index.html'>crossbeam_epoch</a></p><script>window.sidebarCurrent = {name: 'pin', ty: 'fn', relpath: ''};</script><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../theme.js"></script><nav class="sub"><form class="search-form js-only"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../settings.html"><img src="../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><span class='out-of-band'><span id='render-detail'><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class='inner'>&#x2212;</span>]</a></span><a class='srclink' href='../src/crossbeam_epoch/default.rs.html#22-24' title='goto source code'>[src]</a></span><span class='in-band'>Function <a href='index.html'>crossbeam_epoch</a>::<wbr><a class="fn" href=''>pin</a></span></h1><pre class='rust fn'>pub fn pin() -&gt; <a class="struct" href="../crossbeam_epoch/struct.Guard.html" title="struct crossbeam_epoch::Guard">Guard</a></pre><div class='docblock'><p>Pins the current thread.</p>
</div></section><section id="search" class="content hidden"></section><section class="footer"></section><aside id="help" class="hidden"><div><h1 class="hidden">Help</h1><div class="shortcuts"><h2>Keyboard Shortcuts</h2><dl><dt><kbd>?</kbd></dt><dd>Show this help dialog</dd><dt><kbd>S</kbd></dt><dd>Focus the search field</dd><dt><kbd></kbd></dt><dd>Move up in search results</dd><dt><kbd></kbd></dt><dd>Move down in search results</dd><dt><kbd></kbd></dt><dd>Switch tab</dd><dt><kbd>&#9166;</kbd></dt><dd>Go to active search result</dd><dt><kbd>+</kbd></dt><dd>Expand all sections</dd><dt><kbd>-</kbd></dt><dd>Collapse all sections</dd></dl></div><div class="infos"><h2>Search Tricks</h2><p>Prefix searches with a type followed by a colon (e.g., <code>fn:</code>) to restrict the search to a given type.</p><p>Accepted types are: <code>fn</code>, <code>mod</code>, <code>struct</code>, <code>enum</code>, <code>trait</code>, <code>type</code>, <code>macro</code>, and <code>const</code>.</p><p>Search functions by type signature (e.g., <code>vec -> usize</code> or <code>* -> vec</code>)</p><p>Search multiple things at once by splitting your query with comma (e.g., <code>str,u8</code> or <code>String,struct:Vec,test</code>)</p></div></div></aside><script>window.rootPath = "../";window.currentCrate = "crossbeam_epoch";</script><script src="../aliases.js"></script><script src="../main.js"></script><script defer src="../search-index.js"></script></body></html>

View File

@@ -0,0 +1,71 @@
<!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="API documentation for the Rust `unprotected` fn in crate `crossbeam_epoch`."><meta name="keywords" content="rust, rustlang, rust-lang, unprotected"><title>crossbeam_epoch::unprotected - Rust</title><link rel="stylesheet" type="text/css" href="../normalize.css"><link rel="stylesheet" type="text/css" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../dark.css"><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><script src="../storage.js"></script><noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="shortcut icon" href="../favicon.ico"><style type="text/css">#crate-search{background-image:url("../down-arrow.svg");}</style></head><body class="rustdoc fn"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../crossbeam_epoch/index.html'><div class='logo-container'><img src='../rust-logo.png' alt='logo'></div></a><div class="sidebar-elems"><p class='location'><a href='index.html'>crossbeam_epoch</a></p><script>window.sidebarCurrent = {name: 'unprotected', ty: 'fn', relpath: ''};</script><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../theme.js"></script><nav class="sub"><form class="search-form js-only"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../settings.html"><img src="../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><span class='out-of-band'><span id='render-detail'><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class='inner'>&#x2212;</span>]</a></span><a class='srclink' href='../src/crossbeam_epoch/guard.rs.html#518-527' title='goto source code'>[src]</a></span><span class='in-band'>Function <a href='index.html'>crossbeam_epoch</a>::<wbr><a class="fn" href=''>unprotected</a></span></h1><pre class='rust fn'>pub unsafe fn unprotected() -&gt; &amp;'static <a class="struct" href="../crossbeam_epoch/struct.Guard.html" title="struct crossbeam_epoch::Guard">Guard</a></pre><div class='docblock'><p>Returns a reference to a dummy guard that allows unprotected access to <a href="struct.Atomic.html"><code>Atomic</code></a>s.</p>
<p>This guard should be used in special occasions only. Note that it doesn't actually keep any
thread pinned - it's just a fake guard that allows loading from <a href="struct.Atomic.html"><code>Atomic</code></a>s unsafely.</p>
<p>Note that calling <a href="struct.Guard.html#method.defer"><code>defer</code></a> with a dummy guard will not defer the function - it will just
execute the function immediately.</p>
<p>If necessary, it's possible to create more dummy guards by cloning: <code>unprotected().clone()</code>.</p>
<h1 id="safety" class="section-header"><a href="#safety">Safety</a></h1>
<p>Loading and dereferencing data from an <a href="struct.Atomic.html"><code>Atomic</code></a> using this guard is safe only if the
<a href="struct.Atomic.html"><code>Atomic</code></a> is not being concurrently modified by other threads.</p>
<h1 id="examples" class="section-header"><a href="#examples">Examples</a></h1>
<div class="example-wrap"><pre class="rust rust-example-rendered">
<span class="kw">use</span> <span class="ident">crossbeam_epoch</span>::{<span class="self">self</span> <span class="kw">as</span> <span class="ident">epoch</span>, <span class="ident">Atomic</span>};
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">sync</span>::<span class="ident">atomic</span>::<span class="ident">Ordering</span>::<span class="ident">Relaxed</span>;
<span class="kw">let</span> <span class="ident">a</span> <span class="op">=</span> <span class="ident">Atomic</span>::<span class="ident">new</span>(<span class="number">7</span>);
<span class="kw">unsafe</span> {
<span class="comment">// Load `a` without pinning the current thread.</span>
<span class="ident">a</span>.<span class="ident">load</span>(<span class="ident">Relaxed</span>, <span class="ident">epoch</span>::<span class="ident">unprotected</span>());
<span class="comment">// It&#39;s possible to create more dummy guards by calling `clone()`.</span>
<span class="kw">let</span> <span class="ident">dummy</span> <span class="op">=</span> <span class="kw-2">&amp;</span><span class="ident">epoch</span>::<span class="ident">unprotected</span>().<span class="ident">clone</span>();
<span class="ident">dummy</span>.<span class="ident">defer</span>(<span class="kw">move</span> <span class="op">|</span><span class="op">|</span> {
<span class="macro">println</span><span class="macro">!</span>(<span class="string">&quot;This gets executed immediately.&quot;</span>);
});
<span class="comment">// Dropping `dummy` doesn&#39;t affect the current thread - it&#39;s just a noop.</span>
}</pre></div>
<p>The most common use of this function is when constructing or destructing a data structure.</p>
<p>For example, we can use a dummy guard in the destructor of a Treiber stack because at that
point no other thread could concurrently modify the <a href="struct.Atomic.html"><code>Atomic</code></a>s we are accessing.</p>
<p>If we were to actually pin the current thread during destruction, that would just unnecessarily
delay garbage collection and incur some performance cost, so in cases like these <code>unprotected</code>
is very helpful.</p>
<div class="example-wrap"><pre class="rust rust-example-rendered">
<span class="kw">use</span> <span class="ident">crossbeam_epoch</span>::{<span class="self">self</span> <span class="kw">as</span> <span class="ident">epoch</span>, <span class="ident">Atomic</span>};
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">mem</span>::<span class="ident">ManuallyDrop</span>;
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">sync</span>::<span class="ident">atomic</span>::<span class="ident">Ordering</span>::<span class="ident">Relaxed</span>;
<span class="kw">struct</span> <span class="ident">Stack</span><span class="op">&lt;</span><span class="ident">T</span><span class="op">&gt;</span> {
<span class="ident">head</span>: <span class="ident">Atomic</span><span class="op">&lt;</span><span class="ident">Node</span><span class="op">&lt;</span><span class="ident">T</span><span class="op">&gt;</span><span class="op">&gt;</span>,
}
<span class="kw">struct</span> <span class="ident">Node</span><span class="op">&lt;</span><span class="ident">T</span><span class="op">&gt;</span> {
<span class="ident">data</span>: <span class="ident">ManuallyDrop</span><span class="op">&lt;</span><span class="ident">T</span><span class="op">&gt;</span>,
<span class="ident">next</span>: <span class="ident">Atomic</span><span class="op">&lt;</span><span class="ident">Node</span><span class="op">&lt;</span><span class="ident">T</span><span class="op">&gt;</span><span class="op">&gt;</span>,
}
<span class="kw">impl</span><span class="op">&lt;</span><span class="ident">T</span><span class="op">&gt;</span> <span class="ident">Drop</span> <span class="kw">for</span> <span class="ident">Stack</span><span class="op">&lt;</span><span class="ident">T</span><span class="op">&gt;</span> {
<span class="kw">fn</span> <span class="ident">drop</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>) {
<span class="kw">unsafe</span> {
<span class="comment">// Unprotected load.</span>
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">node</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">head</span>.<span class="ident">load</span>(<span class="ident">Relaxed</span>, <span class="ident">epoch</span>::<span class="ident">unprotected</span>());
<span class="kw">while</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">n</span>) <span class="op">=</span> <span class="ident">node</span>.<span class="ident">as_ref</span>() {
<span class="comment">// Unprotected load.</span>
<span class="kw">let</span> <span class="ident">next</span> <span class="op">=</span> <span class="ident">n</span>.<span class="ident">next</span>.<span class="ident">load</span>(<span class="ident">Relaxed</span>, <span class="ident">epoch</span>::<span class="ident">unprotected</span>());
<span class="comment">// Take ownership of the node, then drop its data and deallocate it.</span>
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">o</span> <span class="op">=</span> <span class="ident">node</span>.<span class="ident">into_owned</span>();
<span class="ident">ManuallyDrop</span>::<span class="ident">drop</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">o</span>.<span class="ident">data</span>);
<span class="ident">drop</span>(<span class="ident">o</span>);
<span class="ident">node</span> <span class="op">=</span> <span class="ident">next</span>;
}
}
}
}</pre></div>
</div></section><section id="search" class="content hidden"></section><section class="footer"></section><aside id="help" class="hidden"><div><h1 class="hidden">Help</h1><div class="shortcuts"><h2>Keyboard Shortcuts</h2><dl><dt><kbd>?</kbd></dt><dd>Show this help dialog</dd><dt><kbd>S</kbd></dt><dd>Focus the search field</dd><dt><kbd></kbd></dt><dd>Move up in search results</dd><dt><kbd></kbd></dt><dd>Move down in search results</dd><dt><kbd></kbd></dt><dd>Switch tab</dd><dt><kbd>&#9166;</kbd></dt><dd>Go to active search result</dd><dt><kbd>+</kbd></dt><dd>Expand all sections</dd><dt><kbd>-</kbd></dt><dd>Collapse all sections</dd></dl></div><div class="infos"><h2>Search Tricks</h2><p>Prefix searches with a type followed by a colon (e.g., <code>fn:</code>) to restrict the search to a given type.</p><p>Accepted types are: <code>fn</code>, <code>mod</code>, <code>struct</code>, <code>enum</code>, <code>trait</code>, <code>type</code>, <code>macro</code>, and <code>const</code>.</p><p>Search functions by type signature (e.g., <code>vec -> usize</code> or <code>* -> vec</code>)</p><p>Search multiple things at once by splitting your query with comma (e.g., <code>str,u8</code> or <code>String,struct:Vec,test</code>)</p></div></div></aside><script>window.rootPath = "../";window.currentCrate = "crossbeam_epoch";</script><script src="../aliases.js"></script><script src="../main.js"></script><script defer src="../search-index.js"></script></body></html>

View File

@@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../crossbeam_epoch/fn.unprotected.html">
</head>
<body>
<p>Redirecting to <a href="../../crossbeam_epoch/fn.unprotected.html">../../crossbeam_epoch/fn.unprotected.html</a>...</p>
<script>location.replace("../../crossbeam_epoch/fn.unprotected.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../crossbeam_epoch/struct.Guard.html">
</head>
<body>
<p>Redirecting to <a href="../../crossbeam_epoch/struct.Guard.html">../../crossbeam_epoch/struct.Guard.html</a>...</p>
<script>location.replace("../../crossbeam_epoch/struct.Guard.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,53 @@
<!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="API documentation for the Rust `crossbeam_epoch` crate."><meta name="keywords" content="rust, rustlang, rust-lang, crossbeam_epoch"><title>crossbeam_epoch - Rust</title><link rel="stylesheet" type="text/css" href="../normalize.css"><link rel="stylesheet" type="text/css" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../dark.css"><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><script src="../storage.js"></script><noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="shortcut icon" href="../favicon.ico"><style type="text/css">#crate-search{background-image:url("../down-arrow.svg");}</style></head><body class="rustdoc mod"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../crossbeam_epoch/index.html'><div class='logo-container'><img src='../rust-logo.png' alt='logo'></div></a><p class='location'>Crate crossbeam_epoch</p><div class="sidebar-elems"><a id='all-types' href='all.html'><p>See all crossbeam_epoch's items</p></a><div class="block items"><ul><li><a href="#structs">Structs</a></li><li><a href="#traits">Traits</a></li><li><a href="#functions">Functions</a></li></ul></div><p class='location'></p><script>window.sidebarCurrent = {name: 'crossbeam_epoch', ty: 'mod', relpath: '../'};</script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../theme.js"></script><nav class="sub"><form class="search-form js-only"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../settings.html"><img src="../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><span class='out-of-band'><span id='render-detail'><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class='inner'>&#x2212;</span>]</a></span><a class='srclink' href='../src/crossbeam_epoch/lib.rs.html#1-106' title='goto source code'>[src]</a></span><span class='in-band'>Crate <a class="mod" href=''>crossbeam_epoch</a></span></h1><div class='docblock'><p>Epoch-based memory reclamation.</p>
<p>An interesting problem concurrent collections deal with comes from the remove operation.
Suppose that a thread removes an element from a lock-free map, while another thread is reading
that same element at the same time. The first thread must wait until the second thread stops
reading the element. Only then it is safe to destruct it.</p>
<p>Programming languages that come with garbage collectors solve this problem trivially. The
garbage collector will destruct the removed element when no thread can hold a reference to it
anymore.</p>
<p>This crate implements a basic memory reclamation mechanism, which is based on epochs. When an
element gets removed from a concurrent collection, it is inserted into a pile of garbage and
marked with the current epoch. Every time a thread accesses a collection, it checks the current
epoch, attempts to increment it, and destructs some garbage that became so old that no thread
can be referencing it anymore.</p>
<p>That is the general mechanism behind epoch-based memory reclamation, but the details are a bit
more complicated. Anyhow, memory reclamation is designed to be fully automatic and something
users of concurrent collections don't have to worry much about.</p>
<h1 id="pointers" class="section-header"><a href="#pointers">Pointers</a></h1>
<p>Concurrent collections are built using atomic pointers. This module provides <a href="struct.Atomic.html"><code>Atomic</code></a>, which
is just a shared atomic pointer to a heap-allocated object. Loading an <a href="struct.Atomic.html"><code>Atomic</code></a> yields a
<a href="struct.Shared.html"><code>Shared</code></a>, which is an epoch-protected pointer through which the loaded object can be safely
read.</p>
<h1 id="pinning" class="section-header"><a href="#pinning">Pinning</a></h1>
<p>Before an <a href="struct.Atomic.html"><code>Atomic</code></a> can be loaded, a participant must be <a href="fn.pin.html"><code>pin</code></a>ned. By pinning a participant
we declare that any object that gets removed from now on must not be destructed just
yet. Garbage collection of newly removed objects is suspended until the participant gets
unpinned.</p>
<h1 id="garbage" class="section-header"><a href="#garbage">Garbage</a></h1>
<p>Objects that get removed from concurrent collections must be stashed away until all currently
pinned participants get unpinned. Such objects can be stored into a thread-local or global
storage, where they are kept until the right time for their destruction comes.</p>
<p>There is a global shared instance of garbage queue. You can <a href="fn.defer.html"><code>defer</code></a> the execution of an
arbitrary function until the global epoch is advanced enough. Most notably, concurrent data
structures may defer the deallocation of an object.</p>
<h1 id="apis" class="section-header"><a href="#apis">APIs</a></h1>
<p>For majority of use cases, just use the default garbage collector by invoking <a href="fn.pin.html"><code>pin</code></a>. If you
want to create your own garbage collector, use the <a href="struct.Collector.html"><code>Collector</code></a> API.</p>
</div><h2 id='structs' class='section-header'><a href="#structs">Structs</a></h2>
<table><tr class='module-item'><td><a class="struct" href="struct.Atomic.html" title='crossbeam_epoch::Atomic struct'>Atomic</a></td><td class='docblock-short'><p>An atomic pointer that can be safely shared between threads.</p>
</td></tr><tr class='module-item'><td><a class="struct" href="struct.Collector.html" title='crossbeam_epoch::Collector struct'>Collector</a></td><td class='docblock-short'><p>An epoch-based garbage collector.</p>
</td></tr><tr class='module-item'><td><a class="struct" href="struct.CompareAndSetError.html" title='crossbeam_epoch::CompareAndSetError struct'>CompareAndSetError</a></td><td class='docblock-short'><p>The error returned on failed compare-and-set operation.</p>
</td></tr><tr class='module-item'><td><a class="struct" href="struct.Guard.html" title='crossbeam_epoch::Guard struct'>Guard</a></td><td class='docblock-short'><p>A guard that keeps the current thread pinned.</p>
</td></tr><tr class='module-item'><td><a class="struct" href="struct.LocalHandle.html" title='crossbeam_epoch::LocalHandle struct'>LocalHandle</a></td><td class='docblock-short'><p>A handle to a garbage collector.</p>
</td></tr><tr class='module-item'><td><a class="struct" href="struct.Owned.html" title='crossbeam_epoch::Owned struct'>Owned</a></td><td class='docblock-short'><p>An owned heap-allocated object.</p>
</td></tr><tr class='module-item'><td><a class="struct" href="struct.Shared.html" title='crossbeam_epoch::Shared struct'>Shared</a></td><td class='docblock-short'><p>A pointer to an object protected by the epoch GC.</p>
</td></tr></table><h2 id='traits' class='section-header'><a href="#traits">Traits</a></h2>
<table><tr class='module-item'><td><a class="trait" href="trait.CompareAndSetOrdering.html" title='crossbeam_epoch::CompareAndSetOrdering trait'>CompareAndSetOrdering</a></td><td class='docblock-short'><p>Memory orderings for compare-and-set operations.</p>
</td></tr><tr class='module-item'><td><a class="trait" href="trait.Pointer.html" title='crossbeam_epoch::Pointer trait'>Pointer</a></td><td class='docblock-short'><p>A trait for either <code>Owned</code> or <code>Shared</code> pointers.</p>
</td></tr></table><h2 id='functions' class='section-header'><a href="#functions">Functions</a></h2>
<table><tr class='module-item'><td><a class="fn" href="fn.default_collector.html" title='crossbeam_epoch::default_collector fn'>default_collector</a></td><td class='docblock-short'><p>Returns the default global collector.</p>
</td></tr><tr class='module-item'><td><a class="fn" href="fn.is_pinned.html" title='crossbeam_epoch::is_pinned fn'>is_pinned</a></td><td class='docblock-short'><p>Returns <code>true</code> if the current thread is pinned.</p>
</td></tr><tr class='module-item'><td><a class="fn" href="fn.pin.html" title='crossbeam_epoch::pin fn'>pin</a></td><td class='docblock-short'><p>Pins the current thread.</p>
</td></tr><tr class='module-item'><td><a class="fn" href="fn.unprotected.html" title='crossbeam_epoch::unprotected fn'>unprotected</a><a title='unsafe function' href='#'><sup></sup></a></td><td class='docblock-short'><p>Returns a reference to a dummy guard that allows unprotected access to <a href="struct.Atomic.html"><code>Atomic</code></a>s.</p>
</td></tr></table></section><section id="search" class="content hidden"></section><section class="footer"></section><aside id="help" class="hidden"><div><h1 class="hidden">Help</h1><div class="shortcuts"><h2>Keyboard Shortcuts</h2><dl><dt><kbd>?</kbd></dt><dd>Show this help dialog</dd><dt><kbd>S</kbd></dt><dd>Focus the search field</dd><dt><kbd></kbd></dt><dd>Move up in search results</dd><dt><kbd></kbd></dt><dd>Move down in search results</dd><dt><kbd></kbd></dt><dd>Switch tab</dd><dt><kbd>&#9166;</kbd></dt><dd>Go to active search result</dd><dt><kbd>+</kbd></dt><dd>Expand all sections</dd><dt><kbd>-</kbd></dt><dd>Collapse all sections</dd></dl></div><div class="infos"><h2>Search Tricks</h2><p>Prefix searches with a type followed by a colon (e.g., <code>fn:</code>) to restrict the search to a given type.</p><p>Accepted types are: <code>fn</code>, <code>mod</code>, <code>struct</code>, <code>enum</code>, <code>trait</code>, <code>type</code>, <code>macro</code>, and <code>const</code>.</p><p>Search functions by type signature (e.g., <code>vec -> usize</code> or <code>* -> vec</code>)</p><p>Search multiple things at once by splitting your query with comma (e.g., <code>str,u8</code> or <code>String,struct:Vec,test</code>)</p></div></div></aside><script>window.rootPath = "../";window.currentCrate = "crossbeam_epoch";</script><script src="../aliases.js"></script><script src="../main.js"></script><script defer src="../search-index.js"></script></body></html>

View File

@@ -0,0 +1 @@
initSidebarItems({"fn":[["default_collector","Returns the default global collector."],["is_pinned","Returns `true` if the current thread is pinned."],["pin","Pins the current thread."],["unprotected","Returns a reference to a dummy guard that allows unprotected access to [`Atomic`]s."]],"struct":[["Atomic","An atomic pointer that can be safely shared between threads."],["Collector","An epoch-based garbage collector."],["CompareAndSetError","The error returned on failed compare-and-set operation."],["Guard","A guard that keeps the current thread pinned."],["LocalHandle","A handle to a garbage collector."],["Owned","An owned heap-allocated object."],["Shared","A pointer to an object protected by the epoch GC."]],"trait":[["CompareAndSetOrdering","Memory orderings for compare-and-set operations."],["Pointer","A trait for either `Owned` or `Shared` pointers."]]});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,23 @@
<!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="API documentation for the Rust `CompareAndSetOrdering` trait in crate `crossbeam_epoch`."><meta name="keywords" content="rust, rustlang, rust-lang, CompareAndSetOrdering"><title>crossbeam_epoch::CompareAndSetOrdering - Rust</title><link rel="stylesheet" type="text/css" href="../normalize.css"><link rel="stylesheet" type="text/css" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../dark.css"><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><script src="../storage.js"></script><noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="shortcut icon" href="../favicon.ico"><style type="text/css">#crate-search{background-image:url("../down-arrow.svg");}</style></head><body class="rustdoc trait"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../crossbeam_epoch/index.html'><div class='logo-container'><img src='../rust-logo.png' alt='logo'></div></a><p class='location'>Trait CompareAndSetOrdering</p><div class="sidebar-elems"><div class="block items"><a class="sidebar-title" href="#required-methods">Required Methods</a><div class="sidebar-links"><a href="#tymethod.failure">failure</a><a href="#tymethod.success">success</a></div><a class="sidebar-title" href="#foreign-impls">Implementations on Foreign Types</a><div class="sidebar-links"><a href="#impl-CompareAndSetOrdering-for-(Ordering%2C%20Ordering)">(Ordering, Ordering)</a><a href="#impl-CompareAndSetOrdering-for-Ordering">Ordering</a></div><a class="sidebar-title" href="#implementors">Implementors</a></div><p class='location'><a href='index.html'>crossbeam_epoch</a></p><script>window.sidebarCurrent = {name: 'CompareAndSetOrdering', ty: 'trait', relpath: ''};</script><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../theme.js"></script><nav class="sub"><form class="search-form js-only"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../settings.html"><img src="../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><span class='out-of-band'><span id='render-detail'><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class='inner'>&#x2212;</span>]</a></span><a class='srclink' href='../src/crossbeam_epoch/atomic.rs.html#55-64' title='goto source code'>[src]</a></span><span class='in-band'>Trait <a href='index.html'>crossbeam_epoch</a>::<wbr><a class="trait" href=''>CompareAndSetOrdering</a></span></h1><div class="docblock type-decl hidden-by-usual-hider"><pre class='rust trait'>pub trait CompareAndSetOrdering {
fn <a href='#tymethod.success' class='fnname'>success</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/sync/atomic/enum.Ordering.html" title="enum core::sync::atomic::Ordering">Ordering</a>;
<div class='item-spacer'></div> fn <a href='#tymethod.failure' class='fnname'>failure</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/sync/atomic/enum.Ordering.html" title="enum core::sync::atomic::Ordering">Ordering</a>;
}</pre></div><div class='docblock'><p>Memory orderings for compare-and-set operations.</p>
<p>A compare-and-set operation can have different memory orderings depending on whether it
succeeds or fails. This trait generalizes different ways of specifying memory orderings.</p>
<p>The two ways of specifying orderings for compare-and-set are:</p>
<ol>
<li>Just one <code>Ordering</code> for the success case. In case of failure, the strongest appropriate
ordering is chosen.</li>
<li>A pair of <code>Ordering</code>s. The first one is for the success case, while the second one is
for the failure case.</li>
</ol>
</div>
<h2 id='required-methods' class='small-section-header'>Required methods<a href='#required-methods' class='anchor'></a></h2><div class='methods'><h3 id='tymethod.success' class='method'><code id='success.v'>fn <a href='#tymethod.success' class='fnname'>success</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/sync/atomic/enum.Ordering.html" title="enum core::sync::atomic::Ordering">Ordering</a></code></h3><div class='docblock'><p>The ordering of the operation when it succeeds.</p>
</div><h3 id='tymethod.failure' class='method'><code id='failure.v'>fn <a href='#tymethod.failure' class='fnname'>failure</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/sync/atomic/enum.Ordering.html" title="enum core::sync::atomic::Ordering">Ordering</a></code></h3><div class='docblock'><p>The ordering of the operation when it fails.</p>
<p>The failure ordering can't be <code>Release</code> or <code>AcqRel</code> and must be equivalent or weaker than
the success ordering.</p>
</div></div><span class='loading-content'>Loading content...</span>
<h2 id='foreign-impls' class='small-section-header'>Implementations on Foreign Types<a href='#foreign-impls' class='anchor'></a></h2><h3 id='impl-CompareAndSetOrdering-for-Ordering' class='impl'><code class='in-band'>impl <a class="trait" href="../crossbeam_epoch/trait.CompareAndSetOrdering.html" title="trait crossbeam_epoch::CompareAndSetOrdering">CompareAndSetOrdering</a> for <a class="enum" href="https://doc.rust-lang.org/nightly/core/sync/atomic/enum.Ordering.html" title="enum core::sync::atomic::Ordering">Ordering</a></code><a href='#impl-CompareAndSetOrdering-for-Ordering' class='anchor'></a><a class='srclink' href='../src/crossbeam_epoch/atomic.rs.html#66-76' title='goto source code'>[src]</a></h3><div class='impl-items'><h4 id='method.success' class="method hidden"><code id='success.v-1'>fn <a href='#method.success' class='fnname'>success</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/sync/atomic/enum.Ordering.html" title="enum core::sync::atomic::Ordering">Ordering</a></code><a class='srclink' href='../src/crossbeam_epoch/atomic.rs.html#68-70' title='goto source code'>[src]</a></h4><h4 id='method.failure' class="method hidden"><code id='failure.v-1'>fn <a href='#method.failure' class='fnname'>failure</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/sync/atomic/enum.Ordering.html" title="enum core::sync::atomic::Ordering">Ordering</a></code><a class='srclink' href='../src/crossbeam_epoch/atomic.rs.html#73-75' title='goto source code'>[src]</a></h4></div><h3 id='impl-CompareAndSetOrdering-for-(Ordering%2C%20Ordering)' class='impl'><code class='in-band'>impl <a class="trait" href="../crossbeam_epoch/trait.CompareAndSetOrdering.html" title="trait crossbeam_epoch::CompareAndSetOrdering">CompareAndSetOrdering</a> for <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">(</a><a class="enum" href="https://doc.rust-lang.org/nightly/core/sync/atomic/enum.Ordering.html" title="enum core::sync::atomic::Ordering">Ordering</a>, <a class="enum" href="https://doc.rust-lang.org/nightly/core/sync/atomic/enum.Ordering.html" title="enum core::sync::atomic::Ordering">Ordering</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.tuple.html">)</a></code><a href='#impl-CompareAndSetOrdering-for-(Ordering%2C%20Ordering)' class='anchor'></a><a class='srclink' href='../src/crossbeam_epoch/atomic.rs.html#78-88' title='goto source code'>[src]</a></h3><div class='impl-items'><h4 id='method.success-1' class="method hidden"><code id='success.v-2'>fn <a href='#method.success' class='fnname'>success</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/sync/atomic/enum.Ordering.html" title="enum core::sync::atomic::Ordering">Ordering</a></code><a class='srclink' href='../src/crossbeam_epoch/atomic.rs.html#80-82' title='goto source code'>[src]</a></h4><h4 id='method.failure-1' class="method hidden"><code id='failure.v-2'>fn <a href='#method.failure' class='fnname'>failure</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/sync/atomic/enum.Ordering.html" title="enum core::sync::atomic::Ordering">Ordering</a></code><a class='srclink' href='../src/crossbeam_epoch/atomic.rs.html#85-87' title='goto source code'>[src]</a></h4></div><span class='loading-content'>Loading content...</span>
<h2 id='implementors' class='small-section-header'>Implementors<a href='#implementors' class='anchor'></a></h2><div class='item-list' id='implementors-list'></div><span class='loading-content'>Loading content...</span><script type="text/javascript">window.inlined_types=new Set([]);</script><script type="text/javascript" async
src="../implementors/crossbeam_epoch/trait.CompareAndSetOrdering.js">
</script></section><section id="search" class="content hidden"></section><section class="footer"></section><aside id="help" class="hidden"><div><h1 class="hidden">Help</h1><div class="shortcuts"><h2>Keyboard Shortcuts</h2><dl><dt><kbd>?</kbd></dt><dd>Show this help dialog</dd><dt><kbd>S</kbd></dt><dd>Focus the search field</dd><dt><kbd></kbd></dt><dd>Move up in search results</dd><dt><kbd></kbd></dt><dd>Move down in search results</dd><dt><kbd></kbd></dt><dd>Switch tab</dd><dt><kbd>&#9166;</kbd></dt><dd>Go to active search result</dd><dt><kbd>+</kbd></dt><dd>Expand all sections</dd><dt><kbd>-</kbd></dt><dd>Collapse all sections</dd></dl></div><div class="infos"><h2>Search Tricks</h2><p>Prefix searches with a type followed by a colon (e.g., <code>fn:</code>) to restrict the search to a given type.</p><p>Accepted types are: <code>fn</code>, <code>mod</code>, <code>struct</code>, <code>enum</code>, <code>trait</code>, <code>type</code>, <code>macro</code>, and <code>const</code>.</p><p>Search functions by type signature (e.g., <code>vec -> usize</code> or <code>* -> vec</code>)</p><p>Search multiple things at once by splitting your query with comma (e.g., <code>str,u8</code> or <code>String,struct:Vec,test</code>)</p></div></div></aside><script>window.rootPath = "../";window.currentCrate = "crossbeam_epoch";</script><script src="../aliases.js"></script><script src="../main.js"></script><script defer src="../search-index.js"></script></body></html>

View File

@@ -0,0 +1,14 @@
<!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="API documentation for the Rust `Pointer` trait in crate `crossbeam_epoch`."><meta name="keywords" content="rust, rustlang, rust-lang, Pointer"><title>crossbeam_epoch::Pointer - Rust</title><link rel="stylesheet" type="text/css" href="../normalize.css"><link rel="stylesheet" type="text/css" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../dark.css"><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><script src="../storage.js"></script><noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="shortcut icon" href="../favicon.ico"><style type="text/css">#crate-search{background-image:url("../down-arrow.svg");}</style></head><body class="rustdoc trait"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../crossbeam_epoch/index.html'><div class='logo-container'><img src='../rust-logo.png' alt='logo'></div></a><p class='location'>Trait Pointer</p><div class="sidebar-elems"><div class="block items"><a class="sidebar-title" href="#required-methods">Required Methods</a><div class="sidebar-links"><a href="#tymethod.from_usize">from_usize</a><a href="#tymethod.into_usize">into_usize</a></div><a class="sidebar-title" href="#implementors">Implementors</a></div><p class='location'><a href='index.html'>crossbeam_epoch</a></p><script>window.sidebarCurrent = {name: 'Pointer', ty: 'trait', relpath: ''};</script><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../theme.js"></script><nav class="sub"><form class="search-form js-only"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><a id="settings-menu" href="../settings.html"><img src="../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><span class='out-of-band'><span id='render-detail'><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class='inner'>&#x2212;</span>]</a></span><a class='srclink' href='../src/crossbeam_epoch/atomic.rs.html#573-579' title='goto source code'>[src]</a></span><span class='in-band'>Trait <a href='index.html'>crossbeam_epoch</a>::<wbr><a class="trait" href=''>Pointer</a></span></h1><div class="docblock type-decl hidden-by-usual-hider"><pre class='rust trait'>pub trait Pointer&lt;T&gt; {
fn <a href='#tymethod.into_usize' class='fnname'>into_usize</a>(self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>;
<div class='item-spacer'></div> unsafe fn <a href='#tymethod.from_usize' class='fnname'>from_usize</a>(data: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; Self;
}</pre></div><div class='docblock'><p>A trait for either <code>Owned</code> or <code>Shared</code> pointers.</p>
</div>
<h2 id='required-methods' class='small-section-header'>Required methods<a href='#required-methods' class='anchor'></a></h2><div class='methods'><h3 id='tymethod.into_usize' class='method'><code id='into_usize.v'>fn <a href='#tymethod.into_usize' class='fnname'>into_usize</a>(self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code></h3><div class='docblock'><p>Returns the machine representation of the pointer.</p>
</div><h3 id='tymethod.from_usize' class='method'><code id='from_usize.v'>unsafe fn <a href='#tymethod.from_usize' class='fnname'>from_usize</a>(data: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; Self</code></h3><div class='docblock'><p>Returns a new pointer pointing to the tagged pointer <code>data</code>.</p>
</div></div><span class='loading-content'>Loading content...</span>
<h2 id='implementors' class='small-section-header'>Implementors<a href='#implementors' class='anchor'></a></h2><div class='item-list' id='implementors-list'><h3 id='impl-Pointer%3CT%3E' class='impl'><code class='in-band'>impl&lt;'g, T&gt; Pointer&lt;T&gt; for <a class="struct" href="../crossbeam_epoch/struct.Shared.html" title="struct crossbeam_epoch::Shared">Shared</a>&lt;'g, T&gt;</code><a href='#impl-Pointer%3CT%3E' class='anchor'></a><a class='srclink' href='../src/crossbeam_epoch/atomic.rs.html#831-844' title='goto source code'>[src]</a></h3><div class='impl-items'><h4 id='method.into_usize' class="method hidden"><code id='into_usize.v-1'>fn <a href='#method.into_usize' class='fnname'>into_usize</a>(self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code><a class='srclink' href='../src/crossbeam_epoch/atomic.rs.html#833-835' title='goto source code'>[src]</a></h4><h4 id='method.from_usize' class="method hidden"><code id='from_usize.v-1'>unsafe fn <a href='#method.from_usize' class='fnname'>from_usize</a>(data: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; Self</code><a class='srclink' href='../src/crossbeam_epoch/atomic.rs.html#838-843' title='goto source code'>[src]</a></h4></div><h3 id='impl-Pointer%3CT%3E-1' class='impl'><code class='in-band'>impl&lt;T&gt; Pointer&lt;T&gt; for <a class="struct" href="../crossbeam_epoch/struct.Owned.html" title="struct crossbeam_epoch::Owned">Owned</a>&lt;T&gt;</code><a href='#impl-Pointer%3CT%3E-1' class='anchor'></a><a class='srclink' href='../src/crossbeam_epoch/atomic.rs.html#592-613' title='goto source code'>[src]</a></h3><div class='impl-items'><h4 id='method.into_usize-1' class="method hidden"><code id='into_usize.v-2'>fn <a href='#method.into_usize-1' class='fnname'>into_usize</a>(self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></code><a class='srclink' href='../src/crossbeam_epoch/atomic.rs.html#594-598' title='goto source code'>[src]</a></h4><h4 id='method.from_usize-1' class="method"><code id='from_usize.v-2'>unsafe fn <a href='#method.from_usize-1' class='fnname'>from_usize</a>(data: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; Self</code><a class='srclink' href='../src/crossbeam_epoch/atomic.rs.html#606-612' title='goto source code'>[src]</a></h4><div class='docblock'><p>Returns a new pointer pointing to the tagged pointer <code>data</code>.</p>
<h1 id="panics" class="section-header"><a href="#panics">Panics</a></h1>
<p>Panics if the data is zero in debug mode.</p>
</div></div></div><span class='loading-content'>Loading content...</span><script type="text/javascript">window.inlined_types=new Set([]);</script><script type="text/javascript" async
src="../implementors/crossbeam_epoch/trait.Pointer.js">
</script></section><section id="search" class="content hidden"></section><section class="footer"></section><aside id="help" class="hidden"><div><h1 class="hidden">Help</h1><div class="shortcuts"><h2>Keyboard Shortcuts</h2><dl><dt><kbd>?</kbd></dt><dd>Show this help dialog</dd><dt><kbd>S</kbd></dt><dd>Focus the search field</dd><dt><kbd></kbd></dt><dd>Move up in search results</dd><dt><kbd></kbd></dt><dd>Move down in search results</dd><dt><kbd></kbd></dt><dd>Switch tab</dd><dt><kbd>&#9166;</kbd></dt><dd>Go to active search result</dd><dt><kbd>+</kbd></dt><dd>Expand all sections</dd><dt><kbd>-</kbd></dt><dd>Collapse all sections</dd></dl></div><div class="infos"><h2>Search Tricks</h2><p>Prefix searches with a type followed by a colon (e.g., <code>fn:</code>) to restrict the search to a given type.</p><p>Accepted types are: <code>fn</code>, <code>mod</code>, <code>struct</code>, <code>enum</code>, <code>trait</code>, <code>type</code>, <code>macro</code>, and <code>const</code>.</p><p>Search functions by type signature (e.g., <code>vec -> usize</code> or <code>* -> vec</code>)</p><p>Search multiple things at once by splitting your query with comma (e.g., <code>str,u8</code> or <code>String,struct:Vec,test</code>)</p></div></div></aside><script>window.rootPath = "../";window.currentCrate = "crossbeam_epoch";</script><script src="../aliases.js"></script><script src="../main.js"></script><script defer src="../search-index.js"></script></body></html>