blob: 47a9c274543ec433db180659e007773e019aa010 [file] [log] [blame]
<!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="A `Duration` type to represent a span of time, typically used for system timeouts."><meta name="keywords" content="rust, rustlang, rust-lang, Duration"><title>Duration in instant - 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" href="../normalize.css"><link rel="stylesheet" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" href="../ayu.css" disabled><link rel="stylesheet" href="../dark.css" disabled><link rel="stylesheet" href="../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../storage.js"></script><script defer src="sidebar-items.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 struct"><!--[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="../instant/index.html"><div class="logo-container"><img class="rust-logo" src="../rust-logo.svg" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../instant/index.html"><div class="logo-container"><img class="rust-logo" src="../rust-logo.svg" alt="logo"></div></a><h2 class="location"><a href="#">Duration</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Associated Constants</a></h3><ul class="block"><li><a href="#associatedconstant.MAX">MAX</a></li><li><a href="#associatedconstant.MICROSECOND">MICROSECOND</a></li><li><a href="#associatedconstant.MILLISECOND">MILLISECOND</a></li><li><a href="#associatedconstant.NANOSECOND">NANOSECOND</a></li><li><a href="#associatedconstant.SECOND">SECOND</a></li><li><a href="#associatedconstant.ZERO">ZERO</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.as_micros">as_micros</a></li><li><a href="#method.as_millis">as_millis</a></li><li><a href="#method.as_nanos">as_nanos</a></li><li><a href="#method.as_secs">as_secs</a></li><li><a href="#method.as_secs_f32">as_secs_f32</a></li><li><a href="#method.as_secs_f64">as_secs_f64</a></li><li><a href="#method.checked_add">checked_add</a></li><li><a href="#method.checked_div">checked_div</a></li><li><a href="#method.checked_mul">checked_mul</a></li><li><a href="#method.checked_sub">checked_sub</a></li><li><a href="#method.div_duration_f32">div_duration_f32</a></li><li><a href="#method.div_duration_f64">div_duration_f64</a></li><li><a href="#method.div_f32">div_f32</a></li><li><a href="#method.div_f64">div_f64</a></li><li><a href="#method.from_micros">from_micros</a></li><li><a href="#method.from_millis">from_millis</a></li><li><a href="#method.from_nanos">from_nanos</a></li><li><a href="#method.from_secs">from_secs</a></li><li><a href="#method.from_secs_f32">from_secs_f32</a></li><li><a href="#method.from_secs_f64">from_secs_f64</a></li><li><a href="#method.is_zero">is_zero</a></li><li><a href="#method.mul_f32">mul_f32</a></li><li><a href="#method.mul_f64">mul_f64</a></li><li><a href="#method.new">new</a></li><li><a href="#method.saturating_add">saturating_add</a></li><li><a href="#method.saturating_mul">saturating_mul</a></li><li><a href="#method.saturating_sub">saturating_sub</a></li><li><a href="#method.subsec_micros">subsec_micros</a></li><li><a href="#method.subsec_millis">subsec_millis</a></li><li><a href="#method.subsec_nanos">subsec_nanos</a></li><li><a href="#method.try_from_secs_f32">try_from_secs_f32</a></li><li><a href="#method.try_from_secs_f64">try_from_secs_f64</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Add%3CDuration%3E-for-Duration">Add&lt;Duration&gt;</a></li><li><a href="#impl-AddAssign%3CDuration%3E-for-Duration">AddAssign&lt;Duration&gt;</a></li><li><a href="#impl-Clone-for-Duration">Clone</a></li><li><a href="#impl-Copy-for-Duration">Copy</a></li><li><a href="#impl-Debug-for-Duration">Debug</a></li><li><a href="#impl-Default-for-Duration">Default</a></li><li><a href="#impl-Div%3Cu32%3E-for-Duration">Div&lt;u32&gt;</a></li><li><a href="#impl-DivAssign%3Cu32%3E-for-Duration">DivAssign&lt;u32&gt;</a></li><li><a href="#impl-Eq-for-Duration">Eq</a></li><li><a href="#impl-Hash-for-Duration">Hash</a></li><li><a href="#impl-Mul%3Cu32%3E-for-Duration">Mul&lt;u32&gt;</a></li><li><a href="#impl-MulAssign%3Cu32%3E-for-Duration">MulAssign&lt;u32&gt;</a></li><li><a href="#impl-Ord-for-Duration">Ord</a></li><li><a href="#impl-PartialEq%3CDuration%3E-for-Duration">PartialEq&lt;Duration&gt;</a></li><li><a href="#impl-PartialOrd%3CDuration%3E-for-Duration">PartialOrd&lt;Duration&gt;</a></li><li><a href="#impl-StructuralEq-for-Duration">StructuralEq</a></li><li><a href="#impl-StructuralPartialEq-for-Duration">StructuralPartialEq</a></li><li><a href="#impl-Sub%3CDuration%3E-for-Duration">Sub&lt;Duration&gt;</a></li><li><a href="#impl-SubAssign%3CDuration%3E-for-Duration">SubAssign&lt;Duration&gt;</a></li><li><a href="#impl-Sum%3C%26%27a%20Duration%3E-for-Duration">Sum&lt;&amp;&#39;a Duration&gt;</a></li><li><a href="#impl-Sum%3CDuration%3E-for-Duration">Sum&lt;Duration&gt;</a></li><li><a href="#impl-TryFrom%3CTimespec%3E-for-Duration">TryFrom&lt;Timespec&gt;</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-Duration">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Duration">Send</a></li><li><a href="#impl-Sync-for-Duration">Sync</a></li><li><a href="#impl-Unpin-for-Duration">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Duration">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-Duration">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-Duration">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-Duration">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-Duration">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-Duration">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-Duration">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-Duration">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-Duration">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In instant</a></h2></div></nav><main><div class="width-limiter"><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"><a href="../help.html">?</a></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><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="index.html">instant</a>::<wbr><a class="struct" href="#">Duration</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></h1><span class="out-of-band"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">&#x2212;</span>]</a></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct Duration { /* private fields */ }</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A <code>Duration</code> type to represent a span of time, typically used for system
timeouts.</p>
<p>Each <code>Duration</code> is composed of a whole number of seconds and a fractional part
represented in nanoseconds. If the underlying system does not support
nanosecond-level precision, APIs binding a system timeout will typically round up
the number of nanoseconds.</p>
<p><a href="struct.Duration.html" title="Duration"><code>Duration</code></a>s implement many common traits, including [<code>Add</code>], [<code>Sub</code>], and other
<a href="crate::ops"><code>ops</code></a> traits. It implements [<code>Default</code>] by returning a zero-length <code>Duration</code>.</p>
<h2 id="examples"><a href="#examples">Examples</a></h2>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::time::Duration;
<span class="kw">let </span>five_seconds = Duration::new(<span class="number">5</span>, <span class="number">0</span>);
<span class="kw">let </span>five_seconds_and_five_nanos = five_seconds + Duration::new(<span class="number">0</span>, <span class="number">5</span>);
<span class="macro">assert_eq!</span>(five_seconds_and_five_nanos.as_secs(), <span class="number">5</span>);
<span class="macro">assert_eq!</span>(five_seconds_and_five_nanos.subsec_nanos(), <span class="number">5</span>);
<span class="kw">let </span>ten_millis = Duration::from_millis(<span class="number">10</span>);</code></pre></div>
<h2 id="formatting-duration-values"><a href="#formatting-duration-values">Formatting <code>Duration</code> values</a></h2>
<p><code>Duration</code> intentionally does not have a <code>Display</code> impl, as there are a
variety of ways to format spans of time for human readability. <code>Duration</code>
provides a <code>Debug</code> impl that shows the full precision of the value.</p>
<p>The <code>Debug</code> output uses the non-ASCII “µs” suffix for microseconds. If your
program output may appear in contexts that cannot rely on full Unicode
compatibility, you may wish to format <code>Duration</code> objects yourself or use a
crate to do so.</p>
</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Duration" class="impl has-srclink"><a href="#impl-Duration" class="anchor"></a><h3 class="code-header">impl <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedconstant.SECOND" class="associatedconstant has-srclink"><h4 class="code-header">pub const <a href="#associatedconstant.SECOND" class="constant">SECOND</a>: <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a> = Duration::from_secs(1)</h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>duration_constants</code>)</span></div></span></summary><div class="docblock"><p>The duration of one second.</p>
<h5 id="examples-1"><a href="#examples-1">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attribute">#![feature(duration_constants)]
</span><span class="kw">use </span>std::time::Duration;
<span class="macro">assert_eq!</span>(Duration::SECOND, Duration::from_secs(<span class="number">1</span>));</code></pre></div>
</div></details><details class="rustdoc-toggle" open><summary><section id="associatedconstant.MILLISECOND" class="associatedconstant has-srclink"><h4 class="code-header">pub const <a href="#associatedconstant.MILLISECOND" class="constant">MILLISECOND</a>: <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a> = Duration::from_millis(1)</h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>duration_constants</code>)</span></div></span></summary><div class="docblock"><p>The duration of one millisecond.</p>
<h5 id="examples-2"><a href="#examples-2">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attribute">#![feature(duration_constants)]
</span><span class="kw">use </span>std::time::Duration;
<span class="macro">assert_eq!</span>(Duration::MILLISECOND, Duration::from_millis(<span class="number">1</span>));</code></pre></div>
</div></details><details class="rustdoc-toggle" open><summary><section id="associatedconstant.MICROSECOND" class="associatedconstant has-srclink"><h4 class="code-header">pub const <a href="#associatedconstant.MICROSECOND" class="constant">MICROSECOND</a>: <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a> = Duration::from_micros(1)</h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>duration_constants</code>)</span></div></span></summary><div class="docblock"><p>The duration of one microsecond.</p>
<h5 id="examples-3"><a href="#examples-3">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attribute">#![feature(duration_constants)]
</span><span class="kw">use </span>std::time::Duration;
<span class="macro">assert_eq!</span>(Duration::MICROSECOND, Duration::from_micros(<span class="number">1</span>));</code></pre></div>
</div></details><details class="rustdoc-toggle" open><summary><section id="associatedconstant.NANOSECOND" class="associatedconstant has-srclink"><h4 class="code-header">pub const <a href="#associatedconstant.NANOSECOND" class="constant">NANOSECOND</a>: <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a> = Duration::from_nanos(1)</h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>duration_constants</code>)</span></div></span></summary><div class="docblock"><p>The duration of one nanosecond.</p>
<h5 id="examples-4"><a href="#examples-4">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attribute">#![feature(duration_constants)]
</span><span class="kw">use </span>std::time::Duration;
<span class="macro">assert_eq!</span>(Duration::NANOSECOND, Duration::from_nanos(<span class="number">1</span>));</code></pre></div>
</div></details><details class="rustdoc-toggle" open><summary><section id="associatedconstant.ZERO" class="associatedconstant has-srclink"><span class="since rightside" title="Stable since Rust version 1.53.0">1.53.0</span><h4 class="code-header">pub const <a href="#associatedconstant.ZERO" class="constant">ZERO</a>: <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a> = Duration::from_nanos(0)</h4></section></summary><div class="docblock"><p>A duration of zero time.</p>
<h5 id="examples-5"><a href="#examples-5">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::time::Duration;
<span class="kw">let </span>duration = Duration::ZERO;
<span class="macro">assert!</span>(duration.is_zero());
<span class="macro">assert_eq!</span>(duration.as_nanos(), <span class="number">0</span>);</code></pre></div>
</div></details><details class="rustdoc-toggle" open><summary><section id="associatedconstant.MAX" class="associatedconstant has-srclink"><span class="since rightside" title="Stable since Rust version 1.53.0">1.53.0</span><h4 class="code-header">pub const <a href="#associatedconstant.MAX" class="constant">MAX</a>: <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a> = Duration::new(u64::MAX, NANOS_PER_SEC - 1)</h4></section></summary><div class="docblock"><p>The maximum duration.</p>
<p>May vary by platform as necessary. Must be able to contain the difference between
two instances of <a href="../../std/time/struct.Instant.html"><code>Instant</code></a> or two instances of <a href="../../std/time/struct.SystemTime.html"><code>SystemTime</code></a>.
This constraint gives it a value of about 584,942,417,355 years in practice,
which is currently used on all platforms.</p>
<h5 id="examples-6"><a href="#examples-6">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::time::Duration;
<span class="macro">assert_eq!</span>(Duration::MAX, Duration::new(u64::MAX, <span class="number">1_000_000_000 </span>- <span class="number">1</span>));</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.new" class="method has-srclink"><span class="since rightside" title="const since 1.58.0">const: 1.58.0</span><h4 class="code-header">pub const fn <a href="#method.new" class="fnname">new</a>(secs: u64, nanos: u32) -&gt; <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h4></section></summary><div class="docblock"><p>Creates a new <code>Duration</code> from the specified number of whole seconds and
additional nanoseconds.</p>
<p>If the number of nanoseconds is greater than 1 billion (the number of
nanoseconds in a second), then it will carry over into the seconds provided.</p>
<h5 id="panics"><a href="#panics">Panics</a></h5>
<p>This constructor will panic if the carry from the nanoseconds overflows
the seconds counter.</p>
<h5 id="examples-7"><a href="#examples-7">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::time::Duration;
<span class="kw">let </span>five_seconds = Duration::new(<span class="number">5</span>, <span class="number">0</span>);</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_secs" class="method has-srclink"><span class="since rightside" title="const since 1.32.0">const: 1.32.0</span><h4 class="code-header">pub const fn <a href="#method.from_secs" class="fnname">from_secs</a>(secs: u64) -&gt; <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h4></section></summary><div class="docblock"><p>Creates a new <code>Duration</code> from the specified number of whole seconds.</p>
<h5 id="examples-8"><a href="#examples-8">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::time::Duration;
<span class="kw">let </span>duration = Duration::from_secs(<span class="number">5</span>);
<span class="macro">assert_eq!</span>(<span class="number">5</span>, duration.as_secs());
<span class="macro">assert_eq!</span>(<span class="number">0</span>, duration.subsec_nanos());</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_millis" class="method has-srclink"><span class="since rightside" title="const since 1.32.0">const: 1.32.0</span><h4 class="code-header">pub const fn <a href="#method.from_millis" class="fnname">from_millis</a>(millis: u64) -&gt; <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h4></section></summary><div class="docblock"><p>Creates a new <code>Duration</code> from the specified number of milliseconds.</p>
<h5 id="examples-9"><a href="#examples-9">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::time::Duration;
<span class="kw">let </span>duration = Duration::from_millis(<span class="number">2569</span>);
<span class="macro">assert_eq!</span>(<span class="number">2</span>, duration.as_secs());
<span class="macro">assert_eq!</span>(<span class="number">569_000_000</span>, duration.subsec_nanos());</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_micros" class="method has-srclink"><span class="since rightside" title="Stable since Rust version 1.27.0, const since 1.32.0">1.27.0 (const: 1.32.0)</span><h4 class="code-header">pub const fn <a href="#method.from_micros" class="fnname">from_micros</a>(micros: u64) -&gt; <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h4></section></summary><div class="docblock"><p>Creates a new <code>Duration</code> from the specified number of microseconds.</p>
<h5 id="examples-10"><a href="#examples-10">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::time::Duration;
<span class="kw">let </span>duration = Duration::from_micros(<span class="number">1_000_002</span>);
<span class="macro">assert_eq!</span>(<span class="number">1</span>, duration.as_secs());
<span class="macro">assert_eq!</span>(<span class="number">2000</span>, duration.subsec_nanos());</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_nanos" class="method has-srclink"><span class="since rightside" title="Stable since Rust version 1.27.0, const since 1.32.0">1.27.0 (const: 1.32.0)</span><h4 class="code-header">pub const fn <a href="#method.from_nanos" class="fnname">from_nanos</a>(nanos: u64) -&gt; <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h4></section></summary><div class="docblock"><p>Creates a new <code>Duration</code> from the specified number of nanoseconds.</p>
<h5 id="examples-11"><a href="#examples-11">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::time::Duration;
<span class="kw">let </span>duration = Duration::from_nanos(<span class="number">1_000_000_123</span>);
<span class="macro">assert_eq!</span>(<span class="number">1</span>, duration.as_secs());
<span class="macro">assert_eq!</span>(<span class="number">123</span>, duration.subsec_nanos());</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.is_zero" class="method has-srclink"><span class="since rightside" title="Stable since Rust version 1.53.0, const since 1.53.0">1.53.0 (const: 1.53.0)</span><h4 class="code-header">pub const fn <a href="#method.is_zero" class="fnname">is_zero</a>(&amp;self) -&gt; bool</h4></section></summary><div class="docblock"><p>Returns true if this <code>Duration</code> spans no time.</p>
<h5 id="examples-12"><a href="#examples-12">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::time::Duration;
<span class="macro">assert!</span>(Duration::ZERO.is_zero());
<span class="macro">assert!</span>(Duration::new(<span class="number">0</span>, <span class="number">0</span>).is_zero());
<span class="macro">assert!</span>(Duration::from_nanos(<span class="number">0</span>).is_zero());
<span class="macro">assert!</span>(Duration::from_secs(<span class="number">0</span>).is_zero());
<span class="macro">assert!</span>(!Duration::new(<span class="number">1</span>, <span class="number">1</span>).is_zero());
<span class="macro">assert!</span>(!Duration::from_nanos(<span class="number">1</span>).is_zero());
<span class="macro">assert!</span>(!Duration::from_secs(<span class="number">1</span>).is_zero());</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.as_secs" class="method has-srclink"><span class="since rightside" title="const since 1.32.0">const: 1.32.0</span><h4 class="code-header">pub const fn <a href="#method.as_secs" class="fnname">as_secs</a>(&amp;self) -&gt; u64</h4></section></summary><div class="docblock"><p>Returns the number of <em>whole</em> seconds contained by this <code>Duration</code>.</p>
<p>The returned value does not include the fractional (nanosecond) part of the
duration, which can be obtained using <a href="struct.Duration.html#method.subsec_nanos"><code>subsec_nanos</code></a>.</p>
<h5 id="examples-13"><a href="#examples-13">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::time::Duration;
<span class="kw">let </span>duration = Duration::new(<span class="number">5</span>, <span class="number">730023852</span>);
<span class="macro">assert_eq!</span>(duration.as_secs(), <span class="number">5</span>);</code></pre></div>
<p>To determine the total number of seconds represented by the <code>Duration</code>
including the fractional part, use <a href="struct.Duration.html#method.as_secs_f64"><code>as_secs_f64</code></a> or <a href="struct.Duration.html#method.as_secs_f32"><code>as_secs_f32</code></a></p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.subsec_millis" class="method has-srclink"><span class="since rightside" title="Stable since Rust version 1.27.0, const since 1.32.0">1.27.0 (const: 1.32.0)</span><h4 class="code-header">pub const fn <a href="#method.subsec_millis" class="fnname">subsec_millis</a>(&amp;self) -&gt; u32</h4></section></summary><div class="docblock"><p>Returns the fractional part of this <code>Duration</code>, in whole milliseconds.</p>
<p>This method does <strong>not</strong> return the length of the duration when
represented by milliseconds. The returned number always represents a
fractional portion of a second (i.e., it is less than one thousand).</p>
<h5 id="examples-14"><a href="#examples-14">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::time::Duration;
<span class="kw">let </span>duration = Duration::from_millis(<span class="number">5432</span>);
<span class="macro">assert_eq!</span>(duration.as_secs(), <span class="number">5</span>);
<span class="macro">assert_eq!</span>(duration.subsec_millis(), <span class="number">432</span>);</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.subsec_micros" class="method has-srclink"><span class="since rightside" title="Stable since Rust version 1.27.0, const since 1.32.0">1.27.0 (const: 1.32.0)</span><h4 class="code-header">pub const fn <a href="#method.subsec_micros" class="fnname">subsec_micros</a>(&amp;self) -&gt; u32</h4></section></summary><div class="docblock"><p>Returns the fractional part of this <code>Duration</code>, in whole microseconds.</p>
<p>This method does <strong>not</strong> return the length of the duration when
represented by microseconds. The returned number always represents a
fractional portion of a second (i.e., it is less than one million).</p>
<h5 id="examples-15"><a href="#examples-15">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::time::Duration;
<span class="kw">let </span>duration = Duration::from_micros(<span class="number">1_234_567</span>);
<span class="macro">assert_eq!</span>(duration.as_secs(), <span class="number">1</span>);
<span class="macro">assert_eq!</span>(duration.subsec_micros(), <span class="number">234_567</span>);</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.subsec_nanos" class="method has-srclink"><span class="since rightside" title="const since 1.32.0">const: 1.32.0</span><h4 class="code-header">pub const fn <a href="#method.subsec_nanos" class="fnname">subsec_nanos</a>(&amp;self) -&gt; u32</h4></section></summary><div class="docblock"><p>Returns the fractional part of this <code>Duration</code>, in nanoseconds.</p>
<p>This method does <strong>not</strong> return the length of the duration when
represented by nanoseconds. The returned number always represents a
fractional portion of a second (i.e., it is less than one billion).</p>
<h5 id="examples-16"><a href="#examples-16">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::time::Duration;
<span class="kw">let </span>duration = Duration::from_millis(<span class="number">5010</span>);
<span class="macro">assert_eq!</span>(duration.as_secs(), <span class="number">5</span>);
<span class="macro">assert_eq!</span>(duration.subsec_nanos(), <span class="number">10_000_000</span>);</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.as_millis" class="method has-srclink"><span class="since rightside" title="Stable since Rust version 1.33.0, const since 1.33.0">1.33.0 (const: 1.33.0)</span><h4 class="code-header">pub const fn <a href="#method.as_millis" class="fnname">as_millis</a>(&amp;self) -&gt; u128</h4></section></summary><div class="docblock"><p>Returns the total number of whole milliseconds contained by this <code>Duration</code>.</p>
<h5 id="examples-17"><a href="#examples-17">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::time::Duration;
<span class="kw">let </span>duration = Duration::new(<span class="number">5</span>, <span class="number">730023852</span>);
<span class="macro">assert_eq!</span>(duration.as_millis(), <span class="number">5730</span>);</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.as_micros" class="method has-srclink"><span class="since rightside" title="Stable since Rust version 1.33.0, const since 1.33.0">1.33.0 (const: 1.33.0)</span><h4 class="code-header">pub const fn <a href="#method.as_micros" class="fnname">as_micros</a>(&amp;self) -&gt; u128</h4></section></summary><div class="docblock"><p>Returns the total number of whole microseconds contained by this <code>Duration</code>.</p>
<h5 id="examples-18"><a href="#examples-18">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::time::Duration;
<span class="kw">let </span>duration = Duration::new(<span class="number">5</span>, <span class="number">730023852</span>);
<span class="macro">assert_eq!</span>(duration.as_micros(), <span class="number">5730023</span>);</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.as_nanos" class="method has-srclink"><span class="since rightside" title="Stable since Rust version 1.33.0, const since 1.33.0">1.33.0 (const: 1.33.0)</span><h4 class="code-header">pub const fn <a href="#method.as_nanos" class="fnname">as_nanos</a>(&amp;self) -&gt; u128</h4></section></summary><div class="docblock"><p>Returns the total number of nanoseconds contained by this <code>Duration</code>.</p>
<h5 id="examples-19"><a href="#examples-19">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::time::Duration;
<span class="kw">let </span>duration = Duration::new(<span class="number">5</span>, <span class="number">730023852</span>);
<span class="macro">assert_eq!</span>(duration.as_nanos(), <span class="number">5730023852</span>);</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.checked_add" class="method has-srclink"><span class="since rightside" title="Stable since Rust version 1.16.0, const since 1.58.0">1.16.0 (const: 1.58.0)</span><h4 class="code-header">pub const fn <a href="#method.checked_add" class="fnname">checked_add</a>(self, rhs: <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a>) -&gt; Option&lt;<a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a>&gt;</h4></section></summary><div class="docblock"><p>Checked <code>Duration</code> addition. Computes <code>self + other</code>, returning [<code>None</code>]
if overflow occurred.</p>
<h5 id="examples-20"><a href="#examples-20">Examples</a></h5>
<p>Basic usage:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::time::Duration;
<span class="macro">assert_eq!</span>(Duration::new(<span class="number">0</span>, <span class="number">0</span>).checked_add(Duration::new(<span class="number">0</span>, <span class="number">1</span>)), <span class="prelude-val">Some</span>(Duration::new(<span class="number">0</span>, <span class="number">1</span>)));
<span class="macro">assert_eq!</span>(Duration::new(<span class="number">1</span>, <span class="number">0</span>).checked_add(Duration::new(u64::MAX, <span class="number">0</span>)), <span class="prelude-val">None</span>);</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.saturating_add" class="method has-srclink"><span class="since rightside" title="Stable since Rust version 1.53.0, const since 1.58.0">1.53.0 (const: 1.58.0)</span><h4 class="code-header">pub const fn <a href="#method.saturating_add" class="fnname">saturating_add</a>(self, rhs: <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a>) -&gt; <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h4></section></summary><div class="docblock"><p>Saturating <code>Duration</code> addition. Computes <code>self + other</code>, returning <a href="struct.Duration.html#associatedconstant.MAX" title="Duration::MAX"><code>Duration::MAX</code></a>
if overflow occurred.</p>
<h5 id="examples-21"><a href="#examples-21">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attribute">#![feature(duration_constants)]
</span><span class="kw">use </span>std::time::Duration;
<span class="macro">assert_eq!</span>(Duration::new(<span class="number">0</span>, <span class="number">0</span>).saturating_add(Duration::new(<span class="number">0</span>, <span class="number">1</span>)), Duration::new(<span class="number">0</span>, <span class="number">1</span>));
<span class="macro">assert_eq!</span>(Duration::new(<span class="number">1</span>, <span class="number">0</span>).saturating_add(Duration::new(u64::MAX, <span class="number">0</span>)), Duration::MAX);</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.checked_sub" class="method has-srclink"><span class="since rightside" title="Stable since Rust version 1.16.0, const since 1.58.0">1.16.0 (const: 1.58.0)</span><h4 class="code-header">pub const fn <a href="#method.checked_sub" class="fnname">checked_sub</a>(self, rhs: <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a>) -&gt; Option&lt;<a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a>&gt;</h4></section></summary><div class="docblock"><p>Checked <code>Duration</code> subtraction. Computes <code>self - other</code>, returning [<code>None</code>]
if the result would be negative or if overflow occurred.</p>
<h5 id="examples-22"><a href="#examples-22">Examples</a></h5>
<p>Basic usage:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::time::Duration;
<span class="macro">assert_eq!</span>(Duration::new(<span class="number">0</span>, <span class="number">1</span>).checked_sub(Duration::new(<span class="number">0</span>, <span class="number">0</span>)), <span class="prelude-val">Some</span>(Duration::new(<span class="number">0</span>, <span class="number">1</span>)));
<span class="macro">assert_eq!</span>(Duration::new(<span class="number">0</span>, <span class="number">0</span>).checked_sub(Duration::new(<span class="number">0</span>, <span class="number">1</span>)), <span class="prelude-val">None</span>);</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.saturating_sub" class="method has-srclink"><span class="since rightside" title="Stable since Rust version 1.53.0, const since 1.58.0">1.53.0 (const: 1.58.0)</span><h4 class="code-header">pub const fn <a href="#method.saturating_sub" class="fnname">saturating_sub</a>(self, rhs: <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a>) -&gt; <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h4></section></summary><div class="docblock"><p>Saturating <code>Duration</code> subtraction. Computes <code>self - other</code>, returning <a href="struct.Duration.html#associatedconstant.ZERO" title="Duration::ZERO"><code>Duration::ZERO</code></a>
if the result would be negative or if overflow occurred.</p>
<h5 id="examples-23"><a href="#examples-23">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::time::Duration;
<span class="macro">assert_eq!</span>(Duration::new(<span class="number">0</span>, <span class="number">1</span>).saturating_sub(Duration::new(<span class="number">0</span>, <span class="number">0</span>)), Duration::new(<span class="number">0</span>, <span class="number">1</span>));
<span class="macro">assert_eq!</span>(Duration::new(<span class="number">0</span>, <span class="number">0</span>).saturating_sub(Duration::new(<span class="number">0</span>, <span class="number">1</span>)), Duration::ZERO);</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.checked_mul" class="method has-srclink"><span class="since rightside" title="Stable since Rust version 1.16.0, const since 1.58.0">1.16.0 (const: 1.58.0)</span><h4 class="code-header">pub const fn <a href="#method.checked_mul" class="fnname">checked_mul</a>(self, rhs: u32) -&gt; Option&lt;<a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a>&gt;</h4></section></summary><div class="docblock"><p>Checked <code>Duration</code> multiplication. Computes <code>self * other</code>, returning
[<code>None</code>] if overflow occurred.</p>
<h5 id="examples-24"><a href="#examples-24">Examples</a></h5>
<p>Basic usage:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::time::Duration;
<span class="macro">assert_eq!</span>(Duration::new(<span class="number">0</span>, <span class="number">500_000_001</span>).checked_mul(<span class="number">2</span>), <span class="prelude-val">Some</span>(Duration::new(<span class="number">1</span>, <span class="number">2</span>)));
<span class="macro">assert_eq!</span>(Duration::new(u64::MAX - <span class="number">1</span>, <span class="number">0</span>).checked_mul(<span class="number">2</span>), <span class="prelude-val">None</span>);</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.saturating_mul" class="method has-srclink"><span class="since rightside" title="Stable since Rust version 1.53.0, const since 1.58.0">1.53.0 (const: 1.58.0)</span><h4 class="code-header">pub const fn <a href="#method.saturating_mul" class="fnname">saturating_mul</a>(self, rhs: u32) -&gt; <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h4></section></summary><div class="docblock"><p>Saturating <code>Duration</code> multiplication. Computes <code>self * other</code>, returning
<a href="struct.Duration.html#associatedconstant.MAX" title="Duration::MAX"><code>Duration::MAX</code></a> if overflow occurred.</p>
<h5 id="examples-25"><a href="#examples-25">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attribute">#![feature(duration_constants)]
</span><span class="kw">use </span>std::time::Duration;
<span class="macro">assert_eq!</span>(Duration::new(<span class="number">0</span>, <span class="number">500_000_001</span>).saturating_mul(<span class="number">2</span>), Duration::new(<span class="number">1</span>, <span class="number">2</span>));
<span class="macro">assert_eq!</span>(Duration::new(u64::MAX - <span class="number">1</span>, <span class="number">0</span>).saturating_mul(<span class="number">2</span>), Duration::MAX);</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.checked_div" class="method has-srclink"><span class="since rightside" title="Stable since Rust version 1.16.0, const since 1.58.0">1.16.0 (const: 1.58.0)</span><h4 class="code-header">pub const fn <a href="#method.checked_div" class="fnname">checked_div</a>(self, rhs: u32) -&gt; Option&lt;<a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a>&gt;</h4></section></summary><div class="docblock"><p>Checked <code>Duration</code> division. Computes <code>self / other</code>, returning [<code>None</code>]
if <code>other == 0</code>.</p>
<h5 id="examples-26"><a href="#examples-26">Examples</a></h5>
<p>Basic usage:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::time::Duration;
<span class="macro">assert_eq!</span>(Duration::new(<span class="number">2</span>, <span class="number">0</span>).checked_div(<span class="number">2</span>), <span class="prelude-val">Some</span>(Duration::new(<span class="number">1</span>, <span class="number">0</span>)));
<span class="macro">assert_eq!</span>(Duration::new(<span class="number">1</span>, <span class="number">0</span>).checked_div(<span class="number">2</span>), <span class="prelude-val">Some</span>(Duration::new(<span class="number">0</span>, <span class="number">500_000_000</span>)));
<span class="macro">assert_eq!</span>(Duration::new(<span class="number">2</span>, <span class="number">0</span>).checked_div(<span class="number">0</span>), <span class="prelude-val">None</span>);</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.as_secs_f64" class="method has-srclink"><span class="since rightside" title="Stable since Rust version 1.38.0, const unstable">1.38.0 (const: <a href="https://github.com/rust-lang/rust/issues/72440" title="Tracking issue for duration_consts_float">unstable</a>)</span><h4 class="code-header">pub fn <a href="#method.as_secs_f64" class="fnname">as_secs_f64</a>(&amp;self) -&gt; f64</h4></section></summary><div class="docblock"><p>Returns the number of seconds contained by this <code>Duration</code> as <code>f64</code>.</p>
<p>The returned value does include the fractional (nanosecond) part of the duration.</p>
<h5 id="examples-27"><a href="#examples-27">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::time::Duration;
<span class="kw">let </span>dur = Duration::new(<span class="number">2</span>, <span class="number">700_000_000</span>);
<span class="macro">assert_eq!</span>(dur.as_secs_f64(), <span class="number">2.7</span>);</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.as_secs_f32" class="method has-srclink"><span class="since rightside" title="Stable since Rust version 1.38.0, const unstable">1.38.0 (const: <a href="https://github.com/rust-lang/rust/issues/72440" title="Tracking issue for duration_consts_float">unstable</a>)</span><h4 class="code-header">pub fn <a href="#method.as_secs_f32" class="fnname">as_secs_f32</a>(&amp;self) -&gt; f32</h4></section></summary><div class="docblock"><p>Returns the number of seconds contained by this <code>Duration</code> as <code>f32</code>.</p>
<p>The returned value does include the fractional (nanosecond) part of the duration.</p>
<h5 id="examples-28"><a href="#examples-28">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::time::Duration;
<span class="kw">let </span>dur = Duration::new(<span class="number">2</span>, <span class="number">700_000_000</span>);
<span class="macro">assert_eq!</span>(dur.as_secs_f32(), <span class="number">2.7</span>);</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_secs_f64" class="method has-srclink"><span class="since rightside" title="Stable since Rust version 1.38.0, const unstable">1.38.0 (const: <a href="https://github.com/rust-lang/rust/issues/72440" title="Tracking issue for duration_consts_float">unstable</a>)</span><h4 class="code-header">pub fn <a href="#method.from_secs_f64" class="fnname">from_secs_f64</a>(secs: f64) -&gt; <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h4></section></summary><div class="docblock"><p>Creates a new <code>Duration</code> from the specified number of seconds represented
as <code>f64</code>.</p>
<h5 id="panics-1"><a href="#panics-1">Panics</a></h5>
<p>This constructor will panic if <code>secs</code> is negative, overflows <code>Duration</code> or not finite.</p>
<h5 id="examples-29"><a href="#examples-29">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::time::Duration;
<span class="kw">let </span>res = Duration::from_secs_f64(<span class="number">0.0</span>);
<span class="macro">assert_eq!</span>(res, Duration::new(<span class="number">0</span>, <span class="number">0</span>));
<span class="kw">let </span>res = Duration::from_secs_f64(<span class="number">1e-20</span>);
<span class="macro">assert_eq!</span>(res, Duration::new(<span class="number">0</span>, <span class="number">0</span>));
<span class="kw">let </span>res = Duration::from_secs_f64(<span class="number">4.2e-7</span>);
<span class="macro">assert_eq!</span>(res, Duration::new(<span class="number">0</span>, <span class="number">420</span>));
<span class="kw">let </span>res = Duration::from_secs_f64(<span class="number">2.7</span>);
<span class="macro">assert_eq!</span>(res, Duration::new(<span class="number">2</span>, <span class="number">700_000_000</span>));
<span class="kw">let </span>res = Duration::from_secs_f64(<span class="number">3e10</span>);
<span class="macro">assert_eq!</span>(res, Duration::new(<span class="number">30_000_000_000</span>, <span class="number">0</span>));
<span class="comment">// subnormal float
</span><span class="kw">let </span>res = Duration::from_secs_f64(f64::from_bits(<span class="number">1</span>));
<span class="macro">assert_eq!</span>(res, Duration::new(<span class="number">0</span>, <span class="number">0</span>));
<span class="comment">// conversion uses rounding
</span><span class="kw">let </span>res = Duration::from_secs_f64(<span class="number">0.999e-9</span>);
<span class="macro">assert_eq!</span>(res, Duration::new(<span class="number">0</span>, <span class="number">1</span>));</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_secs_f32" class="method has-srclink"><span class="since rightside" title="Stable since Rust version 1.38.0, const unstable">1.38.0 (const: <a href="https://github.com/rust-lang/rust/issues/72440" title="Tracking issue for duration_consts_float">unstable</a>)</span><h4 class="code-header">pub fn <a href="#method.from_secs_f32" class="fnname">from_secs_f32</a>(secs: f32) -&gt; <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h4></section></summary><div class="docblock"><p>Creates a new <code>Duration</code> from the specified number of seconds represented
as <code>f32</code>.</p>
<h5 id="panics-2"><a href="#panics-2">Panics</a></h5>
<p>This constructor will panic if <code>secs</code> is negative, overflows <code>Duration</code> or not finite.</p>
<h5 id="examples-30"><a href="#examples-30">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::time::Duration;
<span class="kw">let </span>res = Duration::from_secs_f32(<span class="number">0.0</span>);
<span class="macro">assert_eq!</span>(res, Duration::new(<span class="number">0</span>, <span class="number">0</span>));
<span class="kw">let </span>res = Duration::from_secs_f32(<span class="number">1e-20</span>);
<span class="macro">assert_eq!</span>(res, Duration::new(<span class="number">0</span>, <span class="number">0</span>));
<span class="kw">let </span>res = Duration::from_secs_f32(<span class="number">4.2e-7</span>);
<span class="macro">assert_eq!</span>(res, Duration::new(<span class="number">0</span>, <span class="number">420</span>));
<span class="kw">let </span>res = Duration::from_secs_f32(<span class="number">2.7</span>);
<span class="macro">assert_eq!</span>(res, Duration::new(<span class="number">2</span>, <span class="number">700_000_048</span>));
<span class="kw">let </span>res = Duration::from_secs_f32(<span class="number">3e10</span>);
<span class="macro">assert_eq!</span>(res, Duration::new(<span class="number">30_000_001_024</span>, <span class="number">0</span>));
<span class="comment">// subnormal float
</span><span class="kw">let </span>res = Duration::from_secs_f32(f32::from_bits(<span class="number">1</span>));
<span class="macro">assert_eq!</span>(res, Duration::new(<span class="number">0</span>, <span class="number">0</span>));
<span class="comment">// conversion uses rounding
</span><span class="kw">let </span>res = Duration::from_secs_f32(<span class="number">0.999e-9</span>);
<span class="macro">assert_eq!</span>(res, Duration::new(<span class="number">0</span>, <span class="number">1</span>));</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.mul_f64" class="method has-srclink"><span class="since rightside" title="Stable since Rust version 1.38.0, const unstable">1.38.0 (const: <a href="https://github.com/rust-lang/rust/issues/72440" title="Tracking issue for duration_consts_float">unstable</a>)</span><h4 class="code-header">pub fn <a href="#method.mul_f64" class="fnname">mul_f64</a>(self, rhs: f64) -&gt; <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h4></section></summary><div class="docblock"><p>Multiplies <code>Duration</code> by <code>f64</code>.</p>
<h5 id="panics-3"><a href="#panics-3">Panics</a></h5>
<p>This method will panic if result is negative, overflows <code>Duration</code> or not finite.</p>
<h5 id="examples-31"><a href="#examples-31">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::time::Duration;
<span class="kw">let </span>dur = Duration::new(<span class="number">2</span>, <span class="number">700_000_000</span>);
<span class="macro">assert_eq!</span>(dur.mul_f64(<span class="number">3.14</span>), Duration::new(<span class="number">8</span>, <span class="number">478_000_000</span>));
<span class="macro">assert_eq!</span>(dur.mul_f64(<span class="number">3.14e5</span>), Duration::new(<span class="number">847_800</span>, <span class="number">0</span>));</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.mul_f32" class="method has-srclink"><span class="since rightside" title="Stable since Rust version 1.38.0, const unstable">1.38.0 (const: <a href="https://github.com/rust-lang/rust/issues/72440" title="Tracking issue for duration_consts_float">unstable</a>)</span><h4 class="code-header">pub fn <a href="#method.mul_f32" class="fnname">mul_f32</a>(self, rhs: f32) -&gt; <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h4></section></summary><div class="docblock"><p>Multiplies <code>Duration</code> by <code>f32</code>.</p>
<h5 id="panics-4"><a href="#panics-4">Panics</a></h5>
<p>This method will panic if result is negative, overflows <code>Duration</code> or not finite.</p>
<h5 id="examples-32"><a href="#examples-32">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::time::Duration;
<span class="kw">let </span>dur = Duration::new(<span class="number">2</span>, <span class="number">700_000_000</span>);
<span class="macro">assert_eq!</span>(dur.mul_f32(<span class="number">3.14</span>), Duration::new(<span class="number">8</span>, <span class="number">478_000_641</span>));
<span class="macro">assert_eq!</span>(dur.mul_f32(<span class="number">3.14e5</span>), Duration::new(<span class="number">847800</span>, <span class="number">0</span>));</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.div_f64" class="method has-srclink"><span class="since rightside" title="Stable since Rust version 1.38.0, const unstable">1.38.0 (const: <a href="https://github.com/rust-lang/rust/issues/72440" title="Tracking issue for duration_consts_float">unstable</a>)</span><h4 class="code-header">pub fn <a href="#method.div_f64" class="fnname">div_f64</a>(self, rhs: f64) -&gt; <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h4></section></summary><div class="docblock"><p>Divide <code>Duration</code> by <code>f64</code>.</p>
<h5 id="panics-5"><a href="#panics-5">Panics</a></h5>
<p>This method will panic if result is negative, overflows <code>Duration</code> or not finite.</p>
<h5 id="examples-33"><a href="#examples-33">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::time::Duration;
<span class="kw">let </span>dur = Duration::new(<span class="number">2</span>, <span class="number">700_000_000</span>);
<span class="macro">assert_eq!</span>(dur.div_f64(<span class="number">3.14</span>), Duration::new(<span class="number">0</span>, <span class="number">859_872_611</span>));
<span class="macro">assert_eq!</span>(dur.div_f64(<span class="number">3.14e5</span>), Duration::new(<span class="number">0</span>, <span class="number">8_599</span>));</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.div_f32" class="method has-srclink"><span class="since rightside" title="Stable since Rust version 1.38.0, const unstable">1.38.0 (const: <a href="https://github.com/rust-lang/rust/issues/72440" title="Tracking issue for duration_consts_float">unstable</a>)</span><h4 class="code-header">pub fn <a href="#method.div_f32" class="fnname">div_f32</a>(self, rhs: f32) -&gt; <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h4></section></summary><div class="docblock"><p>Divide <code>Duration</code> by <code>f32</code>.</p>
<h5 id="panics-6"><a href="#panics-6">Panics</a></h5>
<p>This method will panic if result is negative, overflows <code>Duration</code> or not finite.</p>
<h5 id="examples-34"><a href="#examples-34">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::time::Duration;
<span class="kw">let </span>dur = Duration::new(<span class="number">2</span>, <span class="number">700_000_000</span>);
<span class="comment">// note that due to rounding errors result is slightly
// different from 0.859_872_611
</span><span class="macro">assert_eq!</span>(dur.div_f32(<span class="number">3.14</span>), Duration::new(<span class="number">0</span>, <span class="number">859_872_580</span>));
<span class="macro">assert_eq!</span>(dur.div_f32(<span class="number">3.14e5</span>), Duration::new(<span class="number">0</span>, <span class="number">8_599</span>));</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.div_duration_f64" class="method has-srclink"><span class="since rightside" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/72440" title="Tracking issue for duration_consts_float">unstable</a></span><h4 class="code-header">pub fn <a href="#method.div_duration_f64" class="fnname">div_duration_f64</a>(self, rhs: <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a>) -&gt; f64</h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>div_duration</code>)</span></div></span></summary><div class="docblock"><p>Divide <code>Duration</code> by <code>Duration</code> and return <code>f64</code>.</p>
<h5 id="examples-35"><a href="#examples-35">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attribute">#![feature(div_duration)]
</span><span class="kw">use </span>std::time::Duration;
<span class="kw">let </span>dur1 = Duration::new(<span class="number">2</span>, <span class="number">700_000_000</span>);
<span class="kw">let </span>dur2 = Duration::new(<span class="number">5</span>, <span class="number">400_000_000</span>);
<span class="macro">assert_eq!</span>(dur1.div_duration_f64(dur2), <span class="number">0.5</span>);</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.div_duration_f32" class="method has-srclink"><span class="since rightside" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/72440" title="Tracking issue for duration_consts_float">unstable</a></span><h4 class="code-header">pub fn <a href="#method.div_duration_f32" class="fnname">div_duration_f32</a>(self, rhs: <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a>) -&gt; f32</h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>div_duration</code>)</span></div></span></summary><div class="docblock"><p>Divide <code>Duration</code> by <code>Duration</code> and return <code>f32</code>.</p>
<h5 id="examples-36"><a href="#examples-36">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attribute">#![feature(div_duration)]
</span><span class="kw">use </span>std::time::Duration;
<span class="kw">let </span>dur1 = Duration::new(<span class="number">2</span>, <span class="number">700_000_000</span>);
<span class="kw">let </span>dur2 = Duration::new(<span class="number">5</span>, <span class="number">400_000_000</span>);
<span class="macro">assert_eq!</span>(dur1.div_duration_f32(dur2), <span class="number">0.5</span>);</code></pre></div>
</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Duration-1" class="impl has-srclink"><a href="#impl-Duration-1" class="anchor"></a><h3 class="code-header">impl <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from_secs_f32" class="method has-srclink"><h4 class="code-header">pub const fn <a href="#method.try_from_secs_f32" class="fnname">try_from_secs_f32</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;secs: f32<br>) -&gt; Result&lt;<a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a>, FromFloatSecsError&gt;</h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>duration_checked_float</code>)</span></div></span></summary><div class="docblock"><p>The checked version of <a href="struct.Duration.html#method.from_secs_f32"><code>from_secs_f32</code></a>.</p>
<p>This constructor will return an <code>Err</code> if <code>secs</code> is negative, overflows <code>Duration</code> or not finite.</p>
<h5 id="examples-37"><a href="#examples-37">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attribute">#![feature(duration_checked_float)]
</span><span class="kw">use </span>std::time::Duration;
<span class="kw">let </span>res = Duration::try_from_secs_f32(<span class="number">0.0</span>);
<span class="macro">assert_eq!</span>(res, <span class="prelude-val">Ok</span>(Duration::new(<span class="number">0</span>, <span class="number">0</span>)));
<span class="kw">let </span>res = Duration::try_from_secs_f32(<span class="number">1e-20</span>);
<span class="macro">assert_eq!</span>(res, <span class="prelude-val">Ok</span>(Duration::new(<span class="number">0</span>, <span class="number">0</span>)));
<span class="kw">let </span>res = Duration::try_from_secs_f32(<span class="number">4.2e-7</span>);
<span class="macro">assert_eq!</span>(res, <span class="prelude-val">Ok</span>(Duration::new(<span class="number">0</span>, <span class="number">420</span>)));
<span class="kw">let </span>res = Duration::try_from_secs_f32(<span class="number">2.7</span>);
<span class="macro">assert_eq!</span>(res, <span class="prelude-val">Ok</span>(Duration::new(<span class="number">2</span>, <span class="number">700_000_048</span>)));
<span class="kw">let </span>res = Duration::try_from_secs_f32(<span class="number">3e10</span>);
<span class="macro">assert_eq!</span>(res, <span class="prelude-val">Ok</span>(Duration::new(<span class="number">30_000_001_024</span>, <span class="number">0</span>)));
<span class="comment">// subnormal float:
</span><span class="kw">let </span>res = Duration::try_from_secs_f32(f32::from_bits(<span class="number">1</span>));
<span class="macro">assert_eq!</span>(res, <span class="prelude-val">Ok</span>(Duration::new(<span class="number">0</span>, <span class="number">0</span>)));
<span class="kw">let </span>res = Duration::try_from_secs_f32(-<span class="number">5.0</span>);
<span class="macro">assert!</span>(res.is_err());
<span class="kw">let </span>res = Duration::try_from_secs_f32(f32::NAN);
<span class="macro">assert!</span>(res.is_err());
<span class="kw">let </span>res = Duration::try_from_secs_f32(<span class="number">2e19</span>);
<span class="macro">assert!</span>(res.is_err());
<span class="comment">// the conversion uses rounding with tie resolution to even
</span><span class="kw">let </span>res = Duration::try_from_secs_f32(<span class="number">0.999e-9</span>);
<span class="macro">assert_eq!</span>(res, <span class="prelude-val">Ok</span>(Duration::new(<span class="number">0</span>, <span class="number">1</span>)));
<span class="comment">// this float represents exactly 976562.5e-9
</span><span class="kw">let </span>val = f32::from_bits(<span class="number">0x3A80_0000</span>);
<span class="kw">let </span>res = Duration::try_from_secs_f32(val);
<span class="macro">assert_eq!</span>(res, <span class="prelude-val">Ok</span>(Duration::new(<span class="number">0</span>, <span class="number">976_562</span>)));
<span class="comment">// this float represents exactly 2929687.5e-9
</span><span class="kw">let </span>val = f32::from_bits(<span class="number">0x3B40_0000</span>);
<span class="kw">let </span>res = Duration::try_from_secs_f32(val);
<span class="macro">assert_eq!</span>(res, <span class="prelude-val">Ok</span>(Duration::new(<span class="number">0</span>, <span class="number">2_929_688</span>)));
<span class="comment">// this float represents exactly 1.000_976_562_5
</span><span class="kw">let </span>val = f32::from_bits(<span class="number">0x3F802000</span>);
<span class="kw">let </span>res = Duration::try_from_secs_f32(val);
<span class="macro">assert_eq!</span>(res, <span class="prelude-val">Ok</span>(Duration::new(<span class="number">1</span>, <span class="number">976_562</span>)));
<span class="comment">// this float represents exactly 1.002_929_687_5
</span><span class="kw">let </span>val = f32::from_bits(<span class="number">0x3F806000</span>);
<span class="kw">let </span>res = Duration::try_from_secs_f32(val);
<span class="macro">assert_eq!</span>(res, <span class="prelude-val">Ok</span>(Duration::new(<span class="number">1</span>, <span class="number">2_929_688</span>)));</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from_secs_f64" class="method has-srclink"><h4 class="code-header">pub const fn <a href="#method.try_from_secs_f64" class="fnname">try_from_secs_f64</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;secs: f64<br>) -&gt; Result&lt;<a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a>, FromFloatSecsError&gt;</h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>duration_checked_float</code>)</span></div></span></summary><div class="docblock"><p>The checked version of <a href="struct.Duration.html#method.from_secs_f64"><code>from_secs_f64</code></a>.</p>
<p>This constructor will return an <code>Err</code> if <code>secs</code> is negative, overflows <code>Duration</code> or not finite.</p>
<h5 id="examples-38"><a href="#examples-38">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attribute">#![feature(duration_checked_float)]
</span><span class="kw">use </span>std::time::Duration;
<span class="kw">let </span>res = Duration::try_from_secs_f64(<span class="number">0.0</span>);
<span class="macro">assert_eq!</span>(res, <span class="prelude-val">Ok</span>(Duration::new(<span class="number">0</span>, <span class="number">0</span>)));
<span class="kw">let </span>res = Duration::try_from_secs_f64(<span class="number">1e-20</span>);
<span class="macro">assert_eq!</span>(res, <span class="prelude-val">Ok</span>(Duration::new(<span class="number">0</span>, <span class="number">0</span>)));
<span class="kw">let </span>res = Duration::try_from_secs_f64(<span class="number">4.2e-7</span>);
<span class="macro">assert_eq!</span>(res, <span class="prelude-val">Ok</span>(Duration::new(<span class="number">0</span>, <span class="number">420</span>)));
<span class="kw">let </span>res = Duration::try_from_secs_f64(<span class="number">2.7</span>);
<span class="macro">assert_eq!</span>(res, <span class="prelude-val">Ok</span>(Duration::new(<span class="number">2</span>, <span class="number">700_000_000</span>)));
<span class="kw">let </span>res = Duration::try_from_secs_f64(<span class="number">3e10</span>);
<span class="macro">assert_eq!</span>(res, <span class="prelude-val">Ok</span>(Duration::new(<span class="number">30_000_000_000</span>, <span class="number">0</span>)));
<span class="comment">// subnormal float
</span><span class="kw">let </span>res = Duration::try_from_secs_f64(f64::from_bits(<span class="number">1</span>));
<span class="macro">assert_eq!</span>(res, <span class="prelude-val">Ok</span>(Duration::new(<span class="number">0</span>, <span class="number">0</span>)));
<span class="kw">let </span>res = Duration::try_from_secs_f64(-<span class="number">5.0</span>);
<span class="macro">assert!</span>(res.is_err());
<span class="kw">let </span>res = Duration::try_from_secs_f64(f64::NAN);
<span class="macro">assert!</span>(res.is_err());
<span class="kw">let </span>res = Duration::try_from_secs_f64(<span class="number">2e19</span>);
<span class="macro">assert!</span>(res.is_err());
<span class="comment">// the conversion uses rounding with tie resolution to even
</span><span class="kw">let </span>res = Duration::try_from_secs_f64(<span class="number">0.999e-9</span>);
<span class="macro">assert_eq!</span>(res, <span class="prelude-val">Ok</span>(Duration::new(<span class="number">0</span>, <span class="number">1</span>)));
<span class="kw">let </span>res = Duration::try_from_secs_f64(<span class="number">0.999_999_999_499</span>);
<span class="macro">assert_eq!</span>(res, <span class="prelude-val">Ok</span>(Duration::new(<span class="number">0</span>, <span class="number">999_999_999</span>)));
<span class="kw">let </span>res = Duration::try_from_secs_f64(<span class="number">0.999_999_999_501</span>);
<span class="macro">assert_eq!</span>(res, <span class="prelude-val">Ok</span>(Duration::new(<span class="number">1</span>, <span class="number">0</span>)));
<span class="kw">let </span>res = Duration::try_from_secs_f64(<span class="number">42.999_999_999_499</span>);
<span class="macro">assert_eq!</span>(res, <span class="prelude-val">Ok</span>(Duration::new(<span class="number">42</span>, <span class="number">999_999_999</span>)));
<span class="kw">let </span>res = Duration::try_from_secs_f64(<span class="number">42.999_999_999_501</span>);
<span class="macro">assert_eq!</span>(res, <span class="prelude-val">Ok</span>(Duration::new(<span class="number">43</span>, <span class="number">0</span>)));
<span class="comment">// this float represents exactly 976562.5e-9
</span><span class="kw">let </span>val = f64::from_bits(<span class="number">0x3F50_0000_0000_0000</span>);
<span class="kw">let </span>res = Duration::try_from_secs_f64(val);
<span class="macro">assert_eq!</span>(res, <span class="prelude-val">Ok</span>(Duration::new(<span class="number">0</span>, <span class="number">976_562</span>)));
<span class="comment">// this float represents exactly 2929687.5e-9
</span><span class="kw">let </span>val = f64::from_bits(<span class="number">0x3F68_0000_0000_0000</span>);
<span class="kw">let </span>res = Duration::try_from_secs_f64(val);
<span class="macro">assert_eq!</span>(res, <span class="prelude-val">Ok</span>(Duration::new(<span class="number">0</span>, <span class="number">2_929_688</span>)));
<span class="comment">// this float represents exactly 1.000_976_562_5
</span><span class="kw">let </span>val = f64::from_bits(<span class="number">0x3FF0_0400_0000_0000</span>);
<span class="kw">let </span>res = Duration::try_from_secs_f64(val);
<span class="macro">assert_eq!</span>(res, <span class="prelude-val">Ok</span>(Duration::new(<span class="number">1</span>, <span class="number">976_562</span>)));
<span class="comment">// this float represents exactly 1.002_929_687_5
</span><span class="kw">let </span>val = f64::from_bits(<span class="number">0x3_FF00_C000_0000_000</span>);
<span class="kw">let </span>res = Duration::try_from_secs_f64(val);
<span class="macro">assert_eq!</span>(res, <span class="prelude-val">Ok</span>(Duration::new(<span class="number">1</span>, <span class="number">2_929_688</span>)));</code></pre></div>
</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Add%3CDuration%3E-for-Duration" class="impl has-srclink"><a href="#impl-Add%3CDuration%3E-for-Duration" class="anchor"></a><h3 class="code-header">impl Add&lt;<a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a>&gt; for <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Output-3" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Output-3" class="anchor"></a><h4 class="code-header">type <a class="associatedtype">Output</a> = <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h4></section></summary><div class='docblock'>The resulting type after applying the <code>+</code> operator.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.add" class="method trait-impl has-srclink"><a href="#method.add" class="anchor"></a><h4 class="code-header">fn <a class="fnname">add</a>(self, rhs: <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a>) -&gt; <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h4></section></summary><div class='docblock'>Performs the <code>+</code> operation. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-AddAssign%3CDuration%3E-for-Duration" class="impl has-srclink"><span class="since rightside" title="Stable since Rust version 1.9.0">1.9.0</span><a href="#impl-AddAssign%3CDuration%3E-for-Duration" class="anchor"></a><h3 class="code-header">impl AddAssign&lt;<a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a>&gt; for <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.add_assign" class="method trait-impl has-srclink"><a href="#method.add_assign" class="anchor"></a><h4 class="code-header">fn <a class="fnname">add_assign</a>(&amp;mut self, rhs: <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a>)</h4></section></summary><div class='docblock'>Performs the <code>+=</code> operation. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-Duration" class="impl has-srclink"><a href="#impl-Clone-for-Duration" class="anchor"></a><h3 class="code-header">impl Clone for <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a href="#method.clone" class="anchor"></a><h4 class="code-header">fn <a class="fnname">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="since rightside" title="Stable since Rust version 1.0.0">1.0.0</span><a href="#method.clone_from" class="anchor"></a><h4 class="code-header">const fn <a class="fnname">clone_from</a>(&amp;mut self, source: &amp;Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-Duration" class="impl has-srclink"><span class="since rightside" title="Stable since Rust version 1.27.0">1.27.0</span><a href="#impl-Debug-for-Duration" class="anchor"></a><h3 class="code-header">impl Debug for <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a class="fnname">fmt</a>(&amp;self, f: &amp;mut Formatter&lt;'_&gt;) -&gt; Result&lt;(), Error&gt;</h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Default-for-Duration" class="impl has-srclink"><a href="#impl-Default-for-Duration" class="anchor"></a><h3 class="code-header">impl Default for <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.default" class="method trait-impl has-srclink"><a href="#method.default" class="anchor"></a><h4 class="code-header">fn <a class="fnname">default</a>() -&gt; <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Div%3Cu32%3E-for-Duration" class="impl has-srclink"><a href="#impl-Div%3Cu32%3E-for-Duration" class="anchor"></a><h3 class="code-header">impl Div&lt;u32&gt; for <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Output" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Output" class="anchor"></a><h4 class="code-header">type <a class="associatedtype">Output</a> = <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h4></section></summary><div class='docblock'>The resulting type after applying the <code>/</code> operator.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.div" class="method trait-impl has-srclink"><a href="#method.div" class="anchor"></a><h4 class="code-header">fn <a class="fnname">div</a>(self, rhs: u32) -&gt; <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h4></section></summary><div class='docblock'>Performs the <code>/</code> operation. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-DivAssign%3Cu32%3E-for-Duration" class="impl has-srclink"><span class="since rightside" title="Stable since Rust version 1.9.0">1.9.0</span><a href="#impl-DivAssign%3Cu32%3E-for-Duration" class="anchor"></a><h3 class="code-header">impl DivAssign&lt;u32&gt; for <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.div_assign" class="method trait-impl has-srclink"><a href="#method.div_assign" class="anchor"></a><h4 class="code-header">fn <a class="fnname">div_assign</a>(&amp;mut self, rhs: u32)</h4></section></summary><div class='docblock'>Performs the <code>/=</code> operation. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Hash-for-Duration" class="impl has-srclink"><a href="#impl-Hash-for-Duration" class="anchor"></a><h3 class="code-header">impl Hash for <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash" class="method trait-impl has-srclink"><a href="#method.hash" class="anchor"></a><h4 class="code-header">fn <a class="fnname">hash</a>&lt;__H&gt;(&amp;self, state: &amp;mut __H)<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;__H: Hasher,</span></h4></section></summary><div class='docblock'>Feeds this value into the given [<code>Hasher</code>]. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hash_slice" class="method trait-impl has-srclink"><a href="#method.hash_slice" class="anchor"></a><h4 class="code-header">fn <a class="fnname">hash_slice</a>&lt;H&gt;(data: &amp;[Self], state: &amp;mut H)<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;H: Hasher,</span></h4></section></summary><div class='docblock'>Feeds a slice of this type into the given [<code>Hasher</code>]. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Mul%3Cu32%3E-for-Duration" class="impl has-srclink"><a href="#impl-Mul%3Cu32%3E-for-Duration" class="anchor"></a><h3 class="code-header">impl Mul&lt;u32&gt; for <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Output-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Output-1" class="anchor"></a><h4 class="code-header">type <a class="associatedtype">Output</a> = <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h4></section></summary><div class='docblock'>The resulting type after applying the <code>*</code> operator.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.mul" class="method trait-impl has-srclink"><a href="#method.mul" class="anchor"></a><h4 class="code-header">fn <a class="fnname">mul</a>(self, rhs: u32) -&gt; <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h4></section></summary><div class='docblock'>Performs the <code>*</code> operation. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-MulAssign%3Cu32%3E-for-Duration" class="impl has-srclink"><span class="since rightside" title="Stable since Rust version 1.9.0">1.9.0</span><a href="#impl-MulAssign%3Cu32%3E-for-Duration" class="anchor"></a><h3 class="code-header">impl MulAssign&lt;u32&gt; for <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.mul_assign" class="method trait-impl has-srclink"><a href="#method.mul_assign" class="anchor"></a><h4 class="code-header">fn <a class="fnname">mul_assign</a>(&amp;mut self, rhs: u32)</h4></section></summary><div class='docblock'>Performs the <code>*=</code> operation. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Ord-for-Duration" class="impl has-srclink"><a href="#impl-Ord-for-Duration" class="anchor"></a><h3 class="code-header">impl Ord for <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.cmp" class="method trait-impl has-srclink"><a href="#method.cmp" class="anchor"></a><h4 class="code-header">fn <a class="fnname">cmp</a>(&amp;self, other: &amp;<a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a>) -&gt; Ordering</h4></section></summary><div class='docblock'>This method returns an [<code>Ordering</code>] between <code>self</code> and <code>other</code>. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.max" class="method trait-impl has-srclink"><span class="since rightside" title="Stable since Rust version 1.21.0">1.21.0</span><a href="#method.max" class="anchor"></a><h4 class="code-header">const fn <a class="fnname">max</a>(self, other: Self) -&gt; Self</h4></section></summary><div class='docblock'>Compares and returns the maximum of two values. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.min" class="method trait-impl has-srclink"><span class="since rightside" title="Stable since Rust version 1.21.0">1.21.0</span><a href="#method.min" class="anchor"></a><h4 class="code-header">const fn <a class="fnname">min</a>(self, other: Self) -&gt; Self</h4></section></summary><div class='docblock'>Compares and returns the minimum of two values. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clamp" class="method trait-impl has-srclink"><span class="since rightside" title="Stable since Rust version 1.50.0">1.50.0</span><a href="#method.clamp" class="anchor"></a><h4 class="code-header">const fn <a class="fnname">clamp</a>(self, min: Self, max: Self) -&gt; Self<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;Self: PartialOrd&lt;Self&gt;,</span></h4></section></summary><div class='docblock'>Restrict a value to a certain interval. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CDuration%3E-for-Duration" class="impl has-srclink"><a href="#impl-PartialEq%3CDuration%3E-for-Duration" class="anchor"></a><h3 class="code-header">impl PartialEq&lt;<a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a>&gt; for <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl has-srclink"><a href="#method.eq" class="anchor"></a><h4 class="code-header">fn <a class="fnname">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a>) -&gt; bool</h4></section></summary><div class='docblock'>This method tests for <code>self</code> and <code>other</code> values to be equal, and is used
by <code>==</code>. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl has-srclink"><span class="since rightside" title="Stable since Rust version 1.0.0">1.0.0</span><a href="#method.ne" class="anchor"></a><h4 class="code-header">const fn <a class="fnname">ne</a>(&amp;self, other: &amp;Rhs) -&gt; bool</h4></section></summary><div class='docblock'>This method tests for <code>!=</code>. The default implementation is almost always
sufficient, and should not be overridden without very good reason. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-PartialOrd%3CDuration%3E-for-Duration" class="impl has-srclink"><a href="#impl-PartialOrd%3CDuration%3E-for-Duration" class="anchor"></a><h3 class="code-header">impl PartialOrd&lt;<a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a>&gt; for <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.partial_cmp" class="method trait-impl has-srclink"><a href="#method.partial_cmp" class="anchor"></a><h4 class="code-header">fn <a class="fnname">partial_cmp</a>(&amp;self, other: &amp;<a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a>) -&gt; Option&lt;Ordering&gt;</h4></section></summary><div class='docblock'>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.lt" class="method trait-impl has-srclink"><span class="since rightside" title="Stable since Rust version 1.0.0">1.0.0</span><a href="#method.lt" class="anchor"></a><h4 class="code-header">const fn <a class="fnname">lt</a>(&amp;self, other: &amp;Rhs) -&gt; bool</h4></section></summary><div class='docblock'>This method tests less than (for <code>self</code> and <code>other</code>) and is used by the <code>&lt;</code> operator. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.le" class="method trait-impl has-srclink"><span class="since rightside" title="Stable since Rust version 1.0.0">1.0.0</span><a href="#method.le" class="anchor"></a><h4 class="code-header">const fn <a class="fnname">le</a>(&amp;self, other: &amp;Rhs) -&gt; bool</h4></section></summary><div class='docblock'>This method tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>&lt;=</code>
operator. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.gt" class="method trait-impl has-srclink"><span class="since rightside" title="Stable since Rust version 1.0.0">1.0.0</span><a href="#method.gt" class="anchor"></a><h4 class="code-header">const fn <a class="fnname">gt</a>(&amp;self, other: &amp;Rhs) -&gt; bool</h4></section></summary><div class='docblock'>This method tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>&gt;</code> operator. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.ge" class="method trait-impl has-srclink"><span class="since rightside" title="Stable since Rust version 1.0.0">1.0.0</span><a href="#method.ge" class="anchor"></a><h4 class="code-header">const fn <a class="fnname">ge</a>(&amp;self, other: &amp;Rhs) -&gt; bool</h4></section></summary><div class='docblock'>This method tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by the <code>&gt;=</code>
operator. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Sub%3CDuration%3E-for-Duration" class="impl has-srclink"><a href="#impl-Sub%3CDuration%3E-for-Duration" class="anchor"></a><h3 class="code-header">impl Sub&lt;<a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a>&gt; for <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Output-2" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Output-2" class="anchor"></a><h4 class="code-header">type <a class="associatedtype">Output</a> = <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h4></section></summary><div class='docblock'>The resulting type after applying the <code>-</code> operator.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.sub" class="method trait-impl has-srclink"><a href="#method.sub" class="anchor"></a><h4 class="code-header">fn <a class="fnname">sub</a>(self, rhs: <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a>) -&gt; <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h4></section></summary><div class='docblock'>Performs the <code>-</code> operation. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-SubAssign%3CDuration%3E-for-Duration" class="impl has-srclink"><span class="since rightside" title="Stable since Rust version 1.9.0">1.9.0</span><a href="#impl-SubAssign%3CDuration%3E-for-Duration" class="anchor"></a><h3 class="code-header">impl SubAssign&lt;<a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a>&gt; for <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.sub_assign" class="method trait-impl has-srclink"><a href="#method.sub_assign" class="anchor"></a><h4 class="code-header">fn <a class="fnname">sub_assign</a>(&amp;mut self, rhs: <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a>)</h4></section></summary><div class='docblock'>Performs the <code>-=</code> operation. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Sum%3C%26%27a%20Duration%3E-for-Duration" class="impl has-srclink"><span class="since rightside" title="Stable since Rust version 1.16.0">1.16.0</span><a href="#impl-Sum%3C%26%27a%20Duration%3E-for-Duration" class="anchor"></a><h3 class="code-header">impl&lt;'a&gt; Sum&lt;&amp;'a <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a>&gt; for <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.sum" class="method trait-impl has-srclink"><a href="#method.sum" class="anchor"></a><h4 class="code-header">fn <a class="fnname">sum</a>&lt;I&gt;(iter: I) -&gt; <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a><span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;I: Iterator&lt;Item = &amp;'a <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a>&gt;,</span></h4></section></summary><div class='docblock'>Method which takes an iterator and generates <code>Self</code> from the elements by
“summing up” the items. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Sum%3CDuration%3E-for-Duration" class="impl has-srclink"><span class="since rightside" title="Stable since Rust version 1.16.0">1.16.0</span><a href="#impl-Sum%3CDuration%3E-for-Duration" class="anchor"></a><h3 class="code-header">impl Sum&lt;<a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a>&gt; for <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.sum-1" class="method trait-impl has-srclink"><a href="#method.sum-1" class="anchor"></a><h4 class="code-header">fn <a class="fnname">sum</a>&lt;I&gt;(iter: I) -&gt; <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a><span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;I: Iterator&lt;Item = <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a>&gt;,</span></h4></section></summary><div class='docblock'>Method which takes an iterator and generates <code>Self</code> from the elements by
“summing up” the items. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-TryFrom%3CTimespec%3E-for-Duration" class="impl has-srclink"><a href="#impl-TryFrom%3CTimespec%3E-for-Duration" class="anchor"></a><h3 class="code-header">impl TryFrom&lt;Timespec&gt; for <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a class="associatedtype">Error</a> = i32</h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><a href="#method.try_from" class="anchor"></a><h4 class="code-header">fn <a class="fnname">try_from</a>(ts: Timespec) -&gt; Result&lt;<a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a>, i32&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><section id="impl-Copy-for-Duration" class="impl has-srclink"><a href="#impl-Copy-for-Duration" class="anchor"></a><h3 class="code-header">impl Copy for <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h3></section><section id="impl-Eq-for-Duration" class="impl has-srclink"><a href="#impl-Eq-for-Duration" class="anchor"></a><h3 class="code-header">impl Eq for <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h3></section><section id="impl-StructuralEq-for-Duration" class="impl has-srclink"><a href="#impl-StructuralEq-for-Duration" class="anchor"></a><h3 class="code-header">impl StructuralEq for <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h3></section><section id="impl-StructuralPartialEq-for-Duration" class="impl has-srclink"><a href="#impl-StructuralPartialEq-for-Duration" class="anchor"></a><h3 class="code-header">impl StructuralPartialEq for <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-Duration" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-Duration" class="anchor"></a><h3 class="code-header">impl RefUnwindSafe for <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h3></section><section id="impl-Send-for-Duration" class="impl has-srclink"><a href="#impl-Send-for-Duration" class="anchor"></a><h3 class="code-header">impl Send for <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h3></section><section id="impl-Sync-for-Duration" class="impl has-srclink"><a href="#impl-Sync-for-Duration" class="anchor"></a><h3 class="code-header">impl Sync for <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h3></section><section id="impl-Unpin-for-Duration" class="impl has-srclink"><a href="#impl-Unpin-for-Duration" class="anchor"></a><h3 class="code-header">impl Unpin for <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h3></section><section id="impl-UnwindSafe-for-Duration" class="impl has-srclink"><a href="#impl-UnwindSafe-for-Duration" class="anchor"></a><h3 class="code-header">impl UnwindSafe for <a class="struct" href="struct.Duration.html" title="struct instant::Duration">Duration</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-Duration" class="impl has-srclink"><a href="#impl-Any-for-Duration" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; Any for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: 'static + ?Sized,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a href="#method.type_id" class="anchor"></a><h4 class="code-header">fn <a class="fnname">type_id</a>(&amp;self) -&gt; TypeId</h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-Duration" class="impl has-srclink"><a href="#impl-Borrow%3CT%3E-for-Duration" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; Borrow&lt;T&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: ?Sized,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="since rightside" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span><a href="#method.borrow" class="anchor"></a><h4 class="code-header">fn <a class="fnname">borrow</a>(&amp;self) -&gt; &amp;T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-Duration" class="impl has-srclink"><a href="#impl-BorrowMut%3CT%3E-for-Duration" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; BorrowMut&lt;T&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: ?Sized,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="since rightside" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">fn <a class="fnname">borrow_mut</a>(&amp;mut self) -&gt; &amp;mut T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-Duration" class="impl has-srclink"><a href="#impl-From%3CT%3E-for-Duration" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; From&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="since rightside" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a class="fnname">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-Duration" class="impl has-srclink"><a href="#impl-Into%3CU%3E-for-Duration" class="anchor"></a><h3 class="code-header">impl&lt;T, U&gt; Into&lt;U&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;U: From&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="since rightside" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span><a href="#method.into" class="anchor"></a><h4 class="code-header">fn <a class="fnname">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
<p>That is, this conversion is whatever the implementation of
<code>[From]&lt;T&gt; for U</code> chooses to do.</p>
</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-Duration" class="impl has-srclink"><a href="#impl-ToOwned-for-Duration" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; ToOwned for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: Clone,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor"></a><h4 class="code-header">type <a class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a href="#method.to_owned" class="anchor"></a><h4 class="code-header">fn <a class="fnname">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a>Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a href="#method.clone_into" class="anchor"></a><h4 class="code-header">fn <a class="fnname">clone_into</a>(&amp;self, target: &amp;mut T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-Duration" class="impl has-srclink"><a href="#impl-TryFrom%3CU%3E-for-Duration" class="anchor"></a><h3 class="code-header">impl&lt;T, U&gt; TryFrom&lt;U&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;U: Into&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-2" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-2" class="anchor"></a><h4 class="code-header">type <a class="associatedtype">Error</a> = Infallible</h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from-1" class="method trait-impl has-srclink"><span class="since rightside" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span><a href="#method.try_from-1" class="anchor"></a><h4 class="code-header">fn <a class="fnname">try_from</a>(value: U) -&gt; Result&lt;T, &lt;T as TryFrom&lt;U&gt;&gt;::Error&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-Duration" class="impl has-srclink"><a href="#impl-TryInto%3CU%3E-for-Duration" class="anchor"></a><h3 class="code-header">impl&lt;T, U&gt; TryInto&lt;U&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;U: TryFrom&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a class="associatedtype">Error</a> = &lt;U as TryFrom&lt;T&gt;&gt;::Error</h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="since rightside" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span><a href="#method.try_into" class="anchor"></a><h4 class="code-header">fn <a class="fnname">try_into</a>(self) -&gt; Result&lt;U, &lt;U as TryFrom&lt;T&gt;&gt;::Error&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../" data-current-crate="instant" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.66.0-nightly (5c8bff74b 2022-10-21)" ></div></body></html>