mcquery-rs/doc/tokio/time/index.html

100 lines
12 KiB
HTML
Raw Normal View History

2021-01-08 20:01:01 +01: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="API documentation for the Rust `time` mod in crate `tokio`."><meta name="keywords" content="rust, rustlang, rust-lang, time"><title>tokio::time - 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="../../light.css" id="themeStyle"><link rel="stylesheet" type="text/css" href="../../dark.css" disabled ><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled ><script id="default-settings"></script><script src="../../storage.js"></script><noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="icon" type="image/svg+xml" href="../../favicon.svg">
<link rel="alternate icon" type="image/png" href="../../favicon-16x16.png">
<link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><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='../../tokio/index.html'><div class='logo-container rust-logo'><img src='../../rust-logo.png' alt='logo'></div></a><p class="location">Module time</p><div class="sidebar-elems"><div class="block items"><ul><li><a href="#reexports">Re-exports</a></li><li><a href="#modules">Modules</a></li><li><a href="#structs">Structs</a></li><li><a href="#functions">Functions</a></li></ul></div><p class="location"><a href="../index.html">tokio</a></p><script>window.sidebarCurrent = {name: "time", ty: "mod", relpath: "../"};</script><script defer src="../sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu"><img src="../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices" role="menu"></div></div><script src="../../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><span class="help-button">?</span>
<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/tokio/time/mod.rs.html#1-119" title="goto source code">[src]</a></span><span class="in-band">Module <a href="../index.html">tokio</a>::<wbr><a class="mod" href="">time</a></span></h1><div class="docblock"><p>Utilities for tracking time.</p>
<p>This module provides a number of types for executing code after a set period
of time.</p>
<ul>
<li>
<p><code>Sleep</code> is a future that does no work and completes at a specific <code>Instant</code>
in time.</p>
</li>
<li>
<p><code>Interval</code> is a stream yielding a value at a fixed period. It is
initialized with a <code>Duration</code> and repeatedly yields each time the duration
elapses.</p>
</li>
<li>
<p><code>Timeout</code>: Wraps a future or stream, setting an upper bound to the amount
of time it is allowed to execute. If the future or stream does not
complete in time, then it is canceled and an error is returned.</p>
</li>
</ul>
<p>These types are sufficient for handling a large number of scenarios
involving time.</p>
<p>These types must be used from within the context of the <code>Runtime</code>.</p>
<h1 id="examples" class="section-header"><a href="#examples">Examples</a></h1>
<p>Wait 100ms and print &quot;100 ms have elapsed&quot;</p>
<div class="example-wrap"><pre class="rust rust-example-rendered">
<span class="kw">use</span> <span class="ident">tokio</span>::<span class="ident">time</span>::<span class="ident">sleep</span>;
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">time</span>::<span class="ident">Duration</span>;
<span class="attribute">#[<span class="ident">tokio</span>::<span class="ident">main</span>]</span>
<span class="ident">async</span> <span class="kw">fn</span> <span class="ident">main</span>() {
<span class="ident">sleep</span>(<span class="ident">Duration</span>::<span class="ident">from_millis</span>(<span class="number">100</span>)).<span class="ident">await</span>;
<span class="macro">println</span><span class="macro">!</span>(<span class="string">&quot;100 ms have elapsed&quot;</span>);
}</pre></div>
<p>Require that an operation takes no more than 300ms.</p>
<div class="example-wrap"><pre class="rust rust-example-rendered">
<span class="kw">use</span> <span class="ident">tokio</span>::<span class="ident">time</span>::{<span class="ident">timeout</span>, <span class="ident">Duration</span>};
<span class="ident">async</span> <span class="kw">fn</span> <span class="ident">long_future</span>() {
<span class="comment">// do work here</span>
}
<span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">timeout</span>(<span class="ident">Duration</span>::<span class="ident">from_secs</span>(<span class="number">1</span>), <span class="ident">long_future</span>()).<span class="ident">await</span>;
<span class="kw">if</span> <span class="ident">res</span>.<span class="ident">is_err</span>() {
<span class="macro">println</span><span class="macro">!</span>(<span class="string">&quot;operation timed out&quot;</span>);
}</pre></div>
<p>A simple example using <a href="../../tokio/time/fn.interval.html"><code>interval</code></a> to execute a task every two seconds.</p>
<p>The difference between <a href="../../tokio/time/fn.interval.html"><code>interval</code></a> and <a href="../../tokio/time/fn.sleep.html"><code>sleep</code></a> is that an
<a href="../../tokio/time/fn.interval.html"><code>interval</code></a> measures the time since the last tick, which means that
<code>.tick().await</code> may wait for a shorter time than the duration specified
for the interval if some time has passed between calls to <code>.tick().await</code>.</p>
<p>If the tick in the example below was replaced with <a href="../../tokio/time/fn.sleep.html"><code>sleep</code></a>, the task
would only be executed once every three seconds, and not every two
seconds.</p>
<div class="example-wrap"><pre class="rust rust-example-rendered">
<span class="kw">use</span> <span class="ident">tokio</span>::<span class="ident">time</span>;
<span class="ident">async</span> <span class="kw">fn</span> <span class="ident">task_that_takes_a_second</span>() {
<span class="macro">println</span><span class="macro">!</span>(<span class="string">&quot;hello&quot;</span>);
<span class="ident">time</span>::<span class="ident">sleep</span>(<span class="ident">time</span>::<span class="ident">Duration</span>::<span class="ident">from_secs</span>(<span class="number">1</span>)).<span class="ident">await</span>
}
<span class="attribute">#[<span class="ident">tokio</span>::<span class="ident">main</span>]</span>
<span class="ident">async</span> <span class="kw">fn</span> <span class="ident">main</span>() {
<span class="kw">let</span> <span class="ident">interval</span> <span class="op">=</span> <span class="ident">time</span>::<span class="ident">interval</span>(<span class="ident">time</span>::<span class="ident">Duration</span>::<span class="ident">from_secs</span>(<span class="number">2</span>));
<span class="ident">tokio</span>::<span class="macro">pin</span><span class="macro">!</span>(<span class="ident">interval</span>);
<span class="kw">for</span> <span class="ident">_i</span> <span class="kw">in</span> <span class="number">0</span>..<span class="number">5</span> {
<span class="ident">interval</span>.<span class="ident">as_mut</span>().<span class="ident">tick</span>().<span class="ident">await</span>;
<span class="ident">task_that_takes_a_second</span>().<span class="ident">await</span>;
}
}</pre></div>
</div><h2 id="reexports" class="section-header"><a href="#reexports">Re-exports</a></h2>
<table><tr><td><code>pub use std::time::<a class="struct" href="https://doc.rust-lang.org/nightly/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>;</code></td></tr></table><h2 id="modules" class="section-header"><a href="#modules">Modules</a></h2>
<table><tr class="module-item"><td><a class="mod" href="error/index.html" title="tokio::time::error mod">error</a></td><td class="docblock-short"><p>Time error types.</p>
</td></tr></table><h2 id="structs" class="section-header"><a href="#structs">Structs</a></h2>
<table><tr class="module-item"><td><a class="struct" href="struct.Instant.html" title="tokio::time::Instant struct">Instant</a></td><td class="docblock-short"><p>A measurement of a monotonically nondecreasing clock.
Opaque and useful only with <code>Duration</code>.</p>
</td></tr><tr class="module-item"><td><a class="struct" href="struct.Interval.html" title="tokio::time::Interval struct">Interval</a></td><td class="docblock-short"><p>Stream returned by <a href="../../tokio/time/fn.interval.html"><code>interval</code></a> and <a href="../../tokio/time/fn.interval_at.html"><code>interval_at</code></a>.</p>
</td></tr><tr class="module-item"><td><a class="struct" href="struct.Sleep.html" title="tokio::time::Sleep struct">Sleep</a></td><td class="docblock-short"><p>Future returned by <a href="../../tokio/time/fn.sleep.html"><code>sleep</code></a> and
<a href="../../tokio/time/fn.sleep_until.html"><code>sleep_until</code></a>.</p>
</td></tr><tr class="module-item"><td><a class="struct" href="struct.Timeout.html" title="tokio::time::Timeout struct">Timeout</a></td><td class="docblock-short"><p>Future returned by <a href="../../tokio/time/fn.timeout.html"><code>timeout</code></a> and <a href="../../tokio/time/fn.timeout_at.html"><code>timeout_at</code></a>.</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.interval.html" title="tokio::time::interval fn">interval</a></td><td class="docblock-short"><p>Creates new <code>Interval</code> that yields with interval of <code>duration</code>. The first
tick completes immediately.</p>
</td></tr><tr class="module-item"><td><a class="fn" href="fn.interval_at.html" title="tokio::time::interval_at fn">interval_at</a></td><td class="docblock-short"><p>Creates new <code>Interval</code> that yields with interval of <code>period</code> with the
first tick completing at <code>start</code>.</p>
</td></tr><tr class="module-item"><td><a class="fn" href="fn.sleep.html" title="tokio::time::sleep fn">sleep</a></td><td class="docblock-short"><p>Waits until <code>duration</code> has elapsed.</p>
</td></tr><tr class="module-item"><td><a class="fn" href="fn.sleep_until.html" title="tokio::time::sleep_until fn">sleep_until</a></td><td class="docblock-short"><p>Waits until <code>deadline</code> is reached.</p>
</td></tr><tr class="module-item"><td><a class="fn" href="fn.timeout.html" title="tokio::time::timeout fn">timeout</a></td><td class="docblock-short"><p>Require a <code>Future</code> to complete before the specified duration has elapsed.</p>
</td></tr><tr class="module-item"><td><a class="fn" href="fn.timeout_at.html" title="tokio::time::timeout_at fn">timeout_at</a></td><td class="docblock-short"><p>Require a <code>Future</code> to complete before the specified instant in time.</p>
</td></tr></table></section><section id="search" class="content hidden"></section><section class="footer"></section><script>window.rootPath = "../../";window.currentCrate = "tokio";</script><script src="../../main.js"></script><script defer src="../../search-index.js"></script></body></html>