<!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 `LocalKey` struct in crate `futures`.">
<meta name="keywords" content="rust, rustlang, rust-lang, LocalKey">
<title>futures::task::LocalKey - Rust</title>
<link rel="stylesheet" type="text/css" href="../../normalize.css">
<link rel="stylesheet" type="text/css" href="../../rustdoc.css">
<link rel="stylesheet" type="text/css" href="../../main.css">
</head>
<body class="rustdoc struct">
<!--[if lte IE 8]>
<div class="warning">
This old browser is unsupported and will most likely display funky
things.
</div>
<![endif]-->
<nav class="sidebar">
<p class='location'><a href='../index.html'>futures</a>::<wbr><a href='index.html'>task</a></p><script>window.sidebarCurrent = {name: 'LocalKey', ty: 'struct', relpath: ''};</script><script defer src="sidebar-items.js"></script>
</nav>
<nav class="sub">
<form class="search-form js-only">
<div class="search-container">
<input class="search-input" name="search"
autocomplete="off"
placeholder="Click or press ‘S’ to search, ‘?’ for more options…"
type="search">
</div>
</form>
</nav>
<section id='main' class="content">
<h1 class='fqn'><span class='in-band'>Struct <a href='../index.html'>futures</a>::<wbr><a href='index.html'>task</a>::<wbr><a class="struct" href=''>LocalKey</a></span><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'>−</span>]
</a>
</span><a class='srclink' href='../../src/futures/task_impl/std/data.rs.html#59-66' title='goto source code'>[src]</a></span></h1>
<pre class='rust struct'>pub struct LocalKey<T> { /* fields omitted */ }</pre><div class='docblock'><p>A key for task-local data stored in a future's task.</p>
<p>This type is generated by the <code>task_local!</code> macro and performs very
similarly to the <code>thread_local!</code> macro and <code>std::thread::LocalKey</code> types.
Data associated with a <code>LocalKey<T></code> is stored inside of a future's task,
and the data is destroyed when the future is completed and the task is
destroyed.</p>
<p>Task-local data can migrate between threads and hence requires a <code>Send</code>
bound. Additionally, task-local data also requires the <code>'static</code> bound to
ensure it lives long enough. When a key is accessed for the first time the
task's data is initialized with the provided initialization expression to
the macro.</p>
</div><h2 id='methods'>Methods</h2><h3 class='impl'><span class='in-band'><code>impl<T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'static> <a class="struct" href="../../futures/task/struct.LocalKey.html" title="struct futures::task::LocalKey">LocalKey</a><T></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/futures/task_impl/std/data.rs.html#93-131' title='goto source code'>[src]</a></span></h3>
<div class='impl-items'><h4 id='method.with' class="method"><span id='with.v' class='invisible'><code>fn <a href='#method.with' class='fnname'>with</a><F, R>(&'static self, f: F) -> R <span class="where fmt-newline">where<br> F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/trait.FnOnce.html" title="trait core::ops::FnOnce">FnOnce</a>(&T) -> R, </span></code></span></h4>
<div class='docblock'><p>Access this task-local key, running the provided closure with a
reference to the value.</p>
<p>This function will access this task-local key to retrieve the data
associated with the current task and this key. If this is the first time
this key has been accessed on this task, then the key will be
initialized with the initialization expression provided at the time the
<code>task_local!</code> macro was called.</p>
<p>The provided closure will be provided a shared reference to the
underlying data associated with this task-local-key. The data itself is
stored inside of the current task.</p>
<h1 id="panics" class="section-header"><a href="#panics">Panics</a></h1>
<p>This function can possibly panic for a number of reasons:</p>
<ul>
<li>If there is not a current task.</li>
<li>If the initialization expression is run and it panics</li>
<li>If the closure provided panics</li>
</ul>
</div></div><h2 id='implementations'>Trait Implementations</h2><h3 class='impl'><span class='in-band'><code>impl<T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a>> <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="../../futures/task/struct.LocalKey.html" title="struct futures::task::LocalKey">LocalKey</a><T></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/futures/task_impl/std/data.rs.html#58' title='goto source code'>[src]</a></span></h3>
<div class='impl-items'><h4 id='method.fmt' class="method"><span id='fmt.v' class='invisible'><code>fn <a href='https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt' class='fnname'>fmt</a>(&self, __arg_0: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>) -> <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></code></span></h4>
<div class='docblock'><p>Formats the value using the given formatter.</p>
</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>?</dt>
<dd>Show this help dialog</dd>
<dt>S</dt>
<dd>Focus the search field</dd>
<dt>⇤</dt>
<dd>Move up in search results</dd>
<dt>⇥</dt>
<dd>Move down in search results</dd>
<dt>⏎</dt>
<dd>Go to active search result</dd>
<dt>+</dt>
<dd>Collapse/expand 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>
</div>
</div>
</aside>
<script>
window.rootPath = "../../";
window.currentCrate = "futures";
</script>
<script src="../../jquery.js"></script>
<script src="../../main.js"></script>
<script defer src="../../search-index.js"></script>
</body>
</html>