Now a REAL lib

This commit is contained in:
Justine
2023-01-09 19:23:20 +01:00
parent ef46613c71
commit fe9e6f04f5
19014 changed files with 715877 additions and 264 deletions

View File

@ -0,0 +1,21 @@
<!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="Thread-safe, non-blocking, “first one wins” flavor of `OnceCell`."><meta name="keywords" content="rust, rustlang, rust-lang, race"><title>once_cell::race - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><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="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script defer src="../../main.js"></script><noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc mod"><!--[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="sidebar-logo" href="../../once_cell/index.html"><div class="logo-container"><img class="rust-logo" src="../../rust-logo.svg" alt="logo"></div></a><h2 class="location"></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../once_cell/index.html"><div class="logo-container"><img class="rust-logo" src="../../rust-logo.svg" alt="logo"></div></a><h2 class="location"><a href="#">Module race</a></h2><div class="sidebar-elems"><section><div class="block"><ul><li><a href="#structs">Structs</a></li></ul></div></section></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../once_cell/index.html"><img class="rust-logo" src="../../rust-logo.svg" alt="logo"></a><nav class="sub"><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><button type="button">?</button></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></div></form></nav></div><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn"><span class="in-band">Module <a href="../index.html">once_cell</a>::<wbr><a class="mod" href="#">race</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/once_cell/race.rs.html#1-396">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">&#x2212;</span>]</a></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Thread-safe, non-blocking, “first one wins” flavor of <code>OnceCell</code>.</p>
<p>If two threads race to initialize a type from the <code>race</code> module, they
dont block, execute initialization function together, but only one of
them stores the result.</p>
<p>This module does not require <code>std</code> feature.</p>
<h2 id="atomic-orderings"><a href="#atomic-orderings">Atomic orderings</a></h2>
<p>All types in this module use <code>Acquire</code> and <code>Release</code>
<a href="https://doc.rust-lang.org/1.64.0/core/sync/atomic/enum.Ordering.html">atomic orderings</a> for all their operations. While this is not
strictly necessary for types other than <code>OnceBox</code>, it is useful for users as
it allows them to be certain that after <code>get</code> or <code>get_or_init</code> returns on
one thread, any side-effects caused by the setter thread prior to them
calling <code>set</code> or <code>get_or_init</code> will be made visible to that thread; without
it, its possible for it to appear as if they havent happened yet from the
getter threads perspective. This is an acceptable tradeoff to make since
<code>Acquire</code> and <code>Release</code> have very little performance overhead on most
architectures versus <code>Relaxed</code>.</p>
</div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.OnceBool.html" title="once_cell::race::OnceBool struct">OnceBool</a></div><div class="item-right docblock-short"><p>A thread-safe cell which can be written to only once.</p>
</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.OnceBox.html" title="once_cell::race::OnceBox struct">OnceBox</a></div><div class="item-right docblock-short"><p>A thread-safe cell which can be written to only once.</p>
</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.OnceNonZeroUsize.html" title="once_cell::race::OnceNonZeroUsize struct">OnceNonZeroUsize</a></div><div class="item-right docblock-short"><p>A thread-safe cell which can be written to only once.</p>
</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.OnceRef.html" title="once_cell::race::OnceRef struct">OnceRef</a></div><div class="item-right docblock-short"><p>A thread-safe cell which can be written to only once.</p>
</div></div></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="once_cell" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.64.0 (a55dd71d5 2022-09-19)" ></div></body></html>

View File

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

View File

@ -0,0 +1 @@
window.SIDEBAR_ITEMS = {"struct":[["OnceBool","A thread-safe cell which can be written to only once."],["OnceBox","A thread-safe cell which can be written to only once."],["OnceNonZeroUsize","A thread-safe cell which can be written to only once."],["OnceRef","A thread-safe cell which can be written to only once."]]};

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