Files
phy/libsw_core/struct.Stopwatch.html
Orion Kindel 0ce894e6b0 doc
2025-03-18 10:30:23 -05:00

385 lines
94 KiB
HTML

<!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 stopwatch measures and accumulates elapsed time between starts and stops."><title>Stopwatch in libsw_core - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../static.files/rustdoc-42caa33d.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="libsw_core" data-themes="" data-resource-suffix="" data-rustdoc-version="1.84.0 (9fc6b4312 2025-01-07)" data-channel="1.84.0" data-search-js="search-92e6798f.js" data-settings-js="settings-0f613d39.js" ><script src="../static.files/storage-59e33391.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-5f194d8c.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-893ab5e7.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-6580c154.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-044be391.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" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../libsw_core/index.html">libsw_<wbr>core</a><span class="version">0.3.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Stopwatch</a></h2><h3><a href="#">Sections</a></h3><ul class="block top-toc"><li><a href="#notes" title="Notes">Notes</a></li></ul><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.elapsed" title="elapsed">elapsed</a></li><li><a href="#structfield.start" title="start">start</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.checked_add" title="checked_add">checked_add</a></li><li><a href="#method.checked_elapsed" title="checked_elapsed">checked_elapsed</a></li><li><a href="#method.checked_elapsed_at" title="checked_elapsed_at">checked_elapsed_at</a></li><li><a href="#method.checked_stop" title="checked_stop">checked_stop</a></li><li><a href="#method.checked_stop_at" title="checked_stop_at">checked_stop_at</a></li><li><a href="#method.checked_sub" title="checked_sub">checked_sub</a></li><li><a href="#method.checked_sub_at" title="checked_sub_at">checked_sub_at</a></li><li><a href="#method.checked_toggle" title="checked_toggle">checked_toggle</a></li><li><a href="#method.checked_toggle_at" title="checked_toggle_at">checked_toggle_at</a></li><li><a href="#method.elapsed" title="elapsed">elapsed</a></li><li><a href="#method.elapsed_at" title="elapsed_at">elapsed_at</a></li><li><a href="#method.from_raw" title="from_raw">from_raw</a></li><li><a href="#method.is_running" title="is_running">is_running</a></li><li><a href="#method.is_stopped" title="is_stopped">is_stopped</a></li><li><a href="#method.new" title="new">new</a></li><li><a href="#method.new_started" title="new_started">new_started</a></li><li><a href="#method.new_started_at" title="new_started_at">new_started_at</a></li><li><a href="#method.replace" title="replace">replace</a></li><li><a href="#method.replace_at" title="replace_at">replace_at</a></li><li><a href="#method.reset" title="reset">reset</a></li><li><a href="#method.reset_in_place" title="reset_in_place">reset_in_place</a></li><li><a href="#method.reset_in_place_at" title="reset_in_place_at">reset_in_place_at</a></li><li><a href="#method.saturating_add" title="saturating_add">saturating_add</a></li><li><a href="#method.saturating_sub" title="saturating_sub">saturating_sub</a></li><li><a href="#method.saturating_sub_at" title="saturating_sub_at">saturating_sub_at</a></li><li><a href="#method.set" title="set">set</a></li><li><a href="#method.set_in_place" title="set_in_place">set_in_place</a></li><li><a href="#method.set_in_place_at" title="set_in_place_at">set_in_place_at</a></li><li><a href="#method.start" title="start">start</a></li><li><a href="#method.start_at" title="start_at">start_at</a></li><li><a href="#method.stop" title="stop">stop</a></li><li><a href="#method.stop_at" title="stop_at">stop_at</a></li><li><a href="#method.toggle" title="toggle">toggle</a></li><li><a href="#method.toggle_at" title="toggle_at">toggle_at</a></li><li><a href="#method.with_elapsed" title="with_elapsed">with_elapsed</a></li><li><a href="#method.with_elapsed_started" title="with_elapsed_started">with_elapsed_started</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Add%3CDuration%3E-for-Stopwatch%3CI%3E" title="Add&#60;Duration&#62;">Add&#60;Duration&#62;</a></li><li><a href="#impl-AddAssign%3CDuration%3E-for-Stopwatch%3CI%3E" title="AddAssign&#60;Duration&#62;">AddAssign&#60;Duration&#62;</a></li><li><a href="#impl-Clone-for-Stopwatch%3CI%3E" title="Clone">Clone</a></li><li><a href="#impl-Copy-for-Stopwatch%3CI%3E" title="Copy">Copy</a></li><li><a href="#impl-Debug-for-Stopwatch%3CI%3E" title="Debug">Debug</a></li><li><a href="#impl-Default-for-Stopwatch%3CI%3E" title="Default">Default</a></li><li><a href="#impl-Eq-for-Stopwatch%3CI%3E" title="Eq">Eq</a></li><li><a href="#impl-Hash-for-Stopwatch%3CI%3E" title="Hash">Hash</a></li><li><a href="#impl-PartialEq-for-Stopwatch%3CI%3E" title="PartialEq">PartialEq</a></li><li><a href="#impl-Sub%3CDuration%3E-for-Stopwatch%3CI%3E" title="Sub&#60;Duration&#62;">Sub&#60;Duration&#62;</a></li><li><a href="#impl-SubAssign%3CDuration%3E-for-Stopwatch%3CI%3E" title="SubAssign&#60;Duration&#62;">SubAssign&#60;Duration&#62;</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-Stopwatch%3CI%3E" title="Freeze">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-Stopwatch%3CI%3E" title="RefUnwindSafe">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Stopwatch%3CI%3E" title="Send">Send</a></li><li><a href="#impl-Sync-for-Stopwatch%3CI%3E" title="Sync">Sync</a></li><li><a href="#impl-Unpin-for-Stopwatch%3CI%3E" title="Unpin">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Stopwatch%3CI%3E" title="UnwindSafe">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T" title="Any">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T" title="Borrow&#60;T&#62;">Borrow&#60;T&#62;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T" title="BorrowMut&#60;T&#62;">BorrowMut&#60;T&#62;</a></li><li><a href="#impl-CloneToUninit-for-T" title="CloneToUninit">CloneToUninit</a></li><li><a href="#impl-From%3CT%3E-for-T" title="From&#60;T&#62;">From&#60;T&#62;</a></li><li><a href="#impl-Into%3CU%3E-for-T" title="Into&#60;U&#62;">Into&#60;U&#62;</a></li><li><a href="#impl-ToOwned-for-T" title="ToOwned">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T" title="TryFrom&#60;U&#62;">TryFrom&#60;U&#62;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T" title="TryInto&#60;U&#62;">TryInto&#60;U&#62;</a></li></ul></section><div id="rustdoc-modnav"><h2 class="in-crate"><a href="index.html">In crate libsw_<wbr>core</a></h2></div></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><rustdoc-search></rustdoc-search><section id="main-content" class="content"><div class="main-heading"><span class="rustdoc-breadcrumbs"><a href="index.html">libsw_core</a></span><h1>Struct <span class="struct">Stopwatch</span><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../src/libsw_core/stopwatch.rs.html#41-47">Source</a> </span></div><pre class="rust item-decl"><code>pub struct Stopwatch&lt;I: <a class="trait" href="trait.Instant.html" title="trait libsw_core::Instant">Instant</a>&gt; {
pub elapsed: <a class="struct" href="https://doc.rust-lang.org/1.84.0/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>,
pub start: <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;I&gt;,
}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A stopwatch measures and accumulates elapsed time between starts and stops.</p>
<p>Stopwatches work with any type that implements <a href="trait.Instant.html" title="trait libsw_core::Instant"><code>Instant</code></a>.</p>
<h2 id="notes"><a class="doc-anchor" href="#notes">§</a>Notes</h2>
<p>It is possible to craft two stopwatches whose internal components differ,
but are equal according to <a href="https://doc.rust-lang.org/1.84.0/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq"><code>PartialEq</code></a>, <a href="https://doc.rust-lang.org/1.84.0/core/cmp/trait.Eq.html" title="trait core::cmp::Eq"><code>Eq</code></a>, and <a href="https://doc.rust-lang.org/1.84.0/core/hash/trait.Hash.html" title="trait core::hash::Hash"><code>Hash</code></a>.</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>elapsed = Duration::from_secs(<span class="number">10</span>);
<span class="kw">let </span><span class="kw-2">mut </span>start = Instant::now();
<span class="kw">let </span>sw_1 = Sw {
elapsed,
start: <span class="prelude-val">Some</span>(start),
};
<span class="kw">let </span>sw_2 = Sw {
<span class="comment">// `elapsed()` is 1s less
</span>elapsed: elapsed - Duration::from_secs(<span class="number">1</span>),
<span class="comment">// now with start pushed back, `elapsed()` is equal
</span>start: <span class="prelude-val">Some</span>(start - Duration::from_secs(<span class="number">1</span>)),
};
<span class="comment">// different components, but they are equal!
</span><span class="macro">assert_eq!</span>(sw_1, sw_2);</code></pre></div>
</div></details><h2 id="fields" class="fields section-header">Fields<a href="#fields" class="anchor">§</a></h2><span id="structfield.elapsed" class="structfield section-header"><a href="#structfield.elapsed" class="anchor field">§</a><code>elapsed: <a class="struct" href="https://doc.rust-lang.org/1.84.0/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a></code></span><div class="docblock"><p>Accumulated elapsed time.</p>
</div><span id="structfield.start" class="structfield section-header"><a href="#structfield.start" class="anchor field">§</a><code>start: <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;I&gt;</code></span><div class="docblock"><p>The instant at which the stopwatch was started, if it is running.
Otherwise, <a href="https://doc.rust-lang.org/1.84.0/core/option/enum.Option.html#variant.None" title="variant core::option::Option::None"><code>None</code></a>.</p>
</div><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Stopwatch%3CI%3E" class="impl"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#49-772">Source</a><a href="#impl-Stopwatch%3CI%3E" class="anchor">§</a><h3 class="code-header">impl&lt;I: <a class="trait" href="trait.Instant.html" title="trait libsw_core::Instant">Instant</a>&gt; <a class="struct" href="struct.Stopwatch.html" title="struct libsw_core::Stopwatch">Stopwatch</a>&lt;I&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.new" class="method"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#62-64">Source</a><h4 class="code-header">pub const fn <a href="#method.new" class="fn">new</a>() -&gt; Self</h4></section></summary><div class="docblock"><p>Returns a stopped stopwatch with zero elapsed time.</p>
<h5 id="examples"><a class="doc-anchor" href="#examples">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>sw = Sw::new();
<span class="macro">assert!</span>(sw.is_stopped());
<span class="macro">assert_eq!</span>(sw.elapsed(), Duration::ZERO);</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.new_started" class="method"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#76-78">Source</a><h4 class="code-header">pub fn <a href="#method.new_started" class="fn">new_started</a>() -&gt; Self</h4></section></summary><div class="docblock"><p>Returns a running stopwatch initialized with zero elapsed time.</p>
<h5 id="examples-1"><a class="doc-anchor" href="#examples-1">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>sw = Sw::new_started();
<span class="macro">assert!</span>(sw.is_running());</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.new_started_at" class="method"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#98-100">Source</a><h4 class="code-header">pub const fn <a href="#method.new_started_at" class="fn">new_started_at</a>(start: I) -&gt; Self</h4></section></summary><div class="docblock"><p>Returns a stopwatch initialized with zero elapsed time, started at the
given instant.</p>
<h5 id="examples-2"><a class="doc-anchor" href="#examples-2">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>now = Instant::now();
<span class="kw">let </span>sw_1 = Sw::new_started_at(now);
<span class="kw">let </span>sw_2 = Sw::new_started_at(now);
<span class="comment">// they've both started at the same time
</span><span class="macro">assert_eq!</span>(sw_1, sw_2);
<span class="comment">// (and had zero elapsed time when they started)
</span><span class="macro">assert_eq!</span>(sw_1.elapsed_at(now), Duration::ZERO);</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.with_elapsed" class="method"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#114-116">Source</a><h4 class="code-header">pub const fn <a href="#method.with_elapsed" class="fn">with_elapsed</a>(elapsed: <a class="struct" href="https://doc.rust-lang.org/1.84.0/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Returns a stopped stopwatch with the given elapsed time.</p>
<h5 id="examples-3"><a class="doc-anchor" href="#examples-3">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>sw = Sw::with_elapsed(Duration::from_secs(<span class="number">1</span>));
<span class="macro">assert!</span>(sw.is_stopped());
<span class="macro">assert_eq!</span>(sw.elapsed(), Duration::from_secs(<span class="number">1</span>));</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.with_elapsed_started" class="method"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#130-132">Source</a><h4 class="code-header">pub fn <a href="#method.with_elapsed_started" class="fn">with_elapsed_started</a>(elapsed: <a class="struct" href="https://doc.rust-lang.org/1.84.0/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Returns a running stopwatch initialized with the given elapsed time.</p>
<h5 id="examples-4"><a class="doc-anchor" href="#examples-4">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>sw = Sw::with_elapsed_started(Duration::from_secs(<span class="number">1</span>));
<span class="macro">assert!</span>(sw.is_running());
<span class="macro">assert!</span>(sw.elapsed() &gt;= Duration::from_secs(<span class="number">1</span>));</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.from_raw" class="method"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#138-140">Source</a><h4 class="code-header">pub const fn <a href="#method.from_raw" class="fn">from_raw</a>(elapsed: <a class="struct" href="https://doc.rust-lang.org/1.84.0/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>, start: <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;I&gt;) -&gt; Self</h4></section></summary><div class="docblock"><p>Returns a stopwatch from its raw parts.</p>
<p>See the <a href="struct.Stopwatch.html" title="struct libsw_core::Stopwatch">top-level documentation</a> for more details.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.is_running" class="method"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#152-154">Source</a><h4 class="code-header">pub const fn <a href="#method.is_running" class="fn">is_running</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns <code>true</code> if the stopwatch is running.</p>
<h5 id="examples-5"><a class="doc-anchor" href="#examples-5">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>sw = Sw::new_started();
<span class="macro">assert!</span>(sw.is_running());</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.is_stopped" class="method"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#166-168">Source</a><h4 class="code-header">pub const fn <a href="#method.is_stopped" class="fn">is_stopped</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns <code>true</code> if the stopwatch is stopped.</p>
<h5 id="examples-6"><a class="doc-anchor" href="#examples-6">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>sw = Sw::new();
<span class="macro">assert!</span>(sw.is_stopped());</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.elapsed" class="method"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#184-186">Source</a><h4 class="code-header">pub fn <a href="#method.elapsed" class="fn">elapsed</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.84.0/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a></h4></section></summary><div class="docblock"><p>Returns the total time elapsed. If overflow occurs, the elapsed time is
saturated to <a href="https://doc.rust-lang.org/1.84.0/core/time/struct.Duration.html#associatedconstant.MAX" title="associated constant core::time::Duration::MAX"><code>Duration::MAX</code></a>.</p>
<h5 id="examples-7"><a class="doc-anchor" href="#examples-7">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>sw = Sw::new_started();
thread::sleep(Duration::from_millis(<span class="number">100</span>));
<span class="macro">assert!</span>(sw.elapsed() &gt;= Duration::from_millis(<span class="number">100</span>));</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.elapsed_at" class="method"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#207-209">Source</a><h4 class="code-header">pub fn <a href="#method.elapsed_at" class="fn">elapsed_at</a>(&amp;self, anchor: I) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.84.0/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a></h4></section></summary><div class="docblock"><p>Returns the total time elapsed, measured as if the current time were
<code>anchor</code>. If overflow occurs, the elapsed time is saturated to
<a href="https://doc.rust-lang.org/1.84.0/core/time/struct.Duration.html#associatedconstant.MAX" title="associated constant core::time::Duration::MAX"><code>Duration::MAX</code></a>.</p>
<h5 id="notes-1"><a class="doc-anchor" href="#notes-1">§</a>Notes</h5>
<p><code>anchor</code> saturates to the last instant the stopwatch was started.</p>
<h5 id="examples-8"><a class="doc-anchor" href="#examples-8">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>sw_1 = Sw::new_started();
<span class="kw">let </span>sw_2 = sw_1;
<span class="kw">let </span>anchor = Instant::now();
<span class="macro">assert!</span>(sw_1.elapsed_at(anchor) == sw_2.elapsed_at(anchor));</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.checked_elapsed" class="method"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#226-228">Source</a><h4 class="code-header">pub fn <a href="#method.checked_elapsed" class="fn">checked_elapsed</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.84.0/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>&gt;</h4></section></summary><div class="docblock"><p>Computes the total time elapsed. If overflow occurred, returns <a href="https://doc.rust-lang.org/1.84.0/core/option/enum.Option.html#variant.None" title="variant core::option::Option::None"><code>None</code></a>.</p>
<h5 id="examples-9"><a class="doc-anchor" href="#examples-9">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sw = Sw::new_started();
thread::sleep(Duration::from_millis(<span class="number">100</span>));
<span class="macro">assert!</span>(sw.checked_elapsed().unwrap() &gt;= Duration::from_millis(<span class="number">100</span>));
sw += Duration::MAX;
<span class="macro">assert!</span>(sw.checked_elapsed().is_none());</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.checked_elapsed_at" class="method"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#237-245">Source</a><h4 class="code-header">pub fn <a href="#method.checked_elapsed_at" class="fn">checked_elapsed_at</a>(&amp;self, anchor: I) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.84.0/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>&gt;</h4></section></summary><div class="docblock"><p>Computes the total time elapsed, measured as if the current time were
<code>anchor</code>. If overflow occurred, returns <a href="https://doc.rust-lang.org/1.84.0/core/option/enum.Option.html#variant.None" title="variant core::option::Option::None"><code>None</code></a>.</p>
<h5 id="notes-2"><a class="doc-anchor" href="#notes-2">§</a>Notes</h5>
<p><code>anchor</code> saturates to the last instant the stopwatch was started.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.start" class="method"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#263-265">Source</a><h4 class="code-header">pub fn <a href="#method.start" class="fn">start</a>(&amp;mut self)</h4></section></summary><div class="docblock"><p>Starts measuring the time elapsed.</p>
<h5 id="examples-10"><a class="doc-anchor" href="#examples-10">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sw = Sw::new();
sw.start();
<span class="kw">let </span>then = sw.elapsed();
thread::sleep(Duration::from_millis(<span class="number">100</span>));
<span class="kw">let </span>now = sw.elapsed();
<span class="macro">assert!</span>(then != now);</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.start_at" class="method"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#296-298">Source</a><h4 class="code-header">pub fn <a href="#method.start_at" class="fn">start_at</a>(&amp;mut self, anchor: I)</h4></section></summary><div class="docblock"><p>Starts measuring the time elapsed as if the current time were <code>anchor</code>.
If the stopwatch is already running, the prior start time is overwritten.</p>
<h5 id="notes-3"><a class="doc-anchor" href="#notes-3">§</a>Notes</h5>
<p>If <code>anchor</code> is ahead of the present, <a href="struct.Stopwatch.html#method.elapsed" title="method libsw_core::Stopwatch::elapsed"><code>elapsed</code></a> will
return <a href="https://doc.rust-lang.org/1.84.0/core/time/struct.Duration.html#associatedconstant.ZERO" title="associated constant core::time::Duration::ZERO"><code>Duration::ZERO</code></a> until the current time catches up to it.</p>
<h5 id="examples-11"><a class="doc-anchor" href="#examples-11">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sw_1 = Sw::new();
<span class="kw">let </span><span class="kw-2">mut </span>sw_2 = Sw::new();
<span class="kw">let </span>start = Instant::now();
<span class="comment">// off to the races! at the same time!
</span>sw_1.start_at(start);
sw_2.start_at(start);
thread::sleep(Duration::from_millis(<span class="number">100</span>));
<span class="kw">let </span>anchor = Instant::now();
<span class="macro">assert_eq!</span>(sw_1.elapsed_at(anchor), sw_2.elapsed_at(anchor)); <span class="comment">// 'twas a tie
</span><span class="macro">assert!</span>(sw_1.elapsed_at(anchor) &gt;= Duration::from_millis(<span class="number">100</span>));</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.stop" class="method"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#321-323">Source</a><h4 class="code-header">pub fn <a href="#method.stop" class="fn">stop</a>(&amp;mut self)</h4></section></summary><div class="docblock"><p>Stops measuring the time elapsed since the last start.</p>
<h5 id="notes-4"><a class="doc-anchor" href="#notes-4">§</a>Notes</h5>
<p>Overflows of the new elapsed time are saturated to <a href="https://doc.rust-lang.org/1.84.0/core/time/struct.Duration.html#associatedconstant.MAX" title="associated constant core::time::Duration::MAX"><code>Duration::MAX</code></a>.
Use <a href="struct.Stopwatch.html#method.checked_stop" title="method libsw_core::Stopwatch::checked_stop"><code>Stopwatch::checked_stop</code></a> to explicitly check for overflow.</p>
<h5 id="examples-12"><a class="doc-anchor" href="#examples-12">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sw = Sw::new_started();
sw.stop();
<span class="kw">let </span>then = sw.elapsed();
thread::sleep(Duration::from_millis(<span class="number">100</span>));
<span class="kw">let </span>now = sw.elapsed();
<span class="macro">assert!</span>(then == now);</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.stop_at" class="method"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#350-355">Source</a><h4 class="code-header">pub fn <a href="#method.stop_at" class="fn">stop_at</a>(&amp;mut self, anchor: I)</h4></section></summary><div class="docblock"><p>Stops measuring the time elapsed since the last start as if the current
time were <code>anchor</code>.</p>
<h5 id="notes-5"><a class="doc-anchor" href="#notes-5">§</a>Notes</h5>
<ul>
<li>
<p>If <code>anchor</code> is earlier than the last start, there is no effect on the
elapsed time.</p>
</li>
<li>
<p>Overflows of the new elapsed time are saturated to <a href="https://doc.rust-lang.org/1.84.0/core/time/struct.Duration.html#associatedconstant.MAX" title="associated constant core::time::Duration::MAX"><code>Duration::MAX</code></a>.
Use <a href="struct.Stopwatch.html#method.checked_stop_at" title="method libsw_core::Stopwatch::checked_stop_at"><code>Stopwatch::checked_stop_at</code></a> to explicitly check for overflow.</p>
</li>
</ul>
<h5 id="examples-13"><a class="doc-anchor" href="#examples-13">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sw_1 = Sw::new_started();
<span class="kw">let </span><span class="kw-2">mut </span>sw_2 = sw_1;
<span class="kw">let </span>stop = Instant::now();
sw_1.stop_at(stop);
sw_2.stop_at(stop);
<span class="macro">assert_eq!</span>(sw_1, sw_2);</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.checked_stop" class="method"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#372-374">Source</a><h4 class="code-header">pub fn <a href="#method.checked_stop" class="fn">checked_stop</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Tries to stop the stopwatch. If the new elapsed time overflows, returns
<code>false</code> without mutating the stopwatch.</p>
<h5 id="examples-14"><a class="doc-anchor" href="#examples-14">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sw = Sw::new_started();
<span class="macro">assert!</span>(sw.checked_stop());
sw.set(Duration::MAX);
sw.start();
<span class="macro">assert!</span>(!sw.checked_stop());</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.checked_stop_at" class="method"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#385-395">Source</a><h4 class="code-header">pub fn <a href="#method.checked_stop_at" class="fn">checked_stop_at</a>(&amp;mut self, anchor: I) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Tries to stop the stopwatch, as if the current time were <code>anchor</code>. If
the new elapsed time overflows, returns <code>false</code> without mutating the
stopwatch.</p>
<h5 id="notes-6"><a class="doc-anchor" href="#notes-6">§</a>Notes</h5>
<p>If <code>anchor</code> is earlier than the last start, there is no effect on the
elapsed time.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.toggle" class="method"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#413-415">Source</a><h4 class="code-header">pub fn <a href="#method.toggle" class="fn">toggle</a>(&amp;mut self)</h4></section></summary><div class="docblock"><p>Toggles whether the stopwatch is running or stopped.</p>
<h5 id="notes-7"><a class="doc-anchor" href="#notes-7">§</a>Notes</h5>
<p>See <a href="struct.Stopwatch.html#method.stop" title="method libsw_core::Stopwatch::stop"><code>stop</code></a> for details about how overflow is handled.</p>
<h5 id="examples-15"><a class="doc-anchor" href="#examples-15">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sw = Sw::new();
sw.toggle();
<span class="macro">assert!</span>(sw.is_running());
sw.toggle();
<span class="macro">assert!</span>(sw.is_stopped());</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.toggle_at" class="method"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#442-448">Source</a><h4 class="code-header">pub fn <a href="#method.toggle_at" class="fn">toggle_at</a>(&amp;mut self, anchor: I)</h4></section></summary><div class="docblock"><p>Toggles whether the stopwatch is running or stopped, as if the current
time were <code>anchor</code>.</p>
<h5 id="notes-8"><a class="doc-anchor" href="#notes-8">§</a>Notes</h5>
<p>See <a href="struct.Stopwatch.html#method.start_at" title="method libsw_core::Stopwatch::start_at"><code>start_at</code></a> and <a href="struct.Stopwatch.html#method.stop_at" title="method libsw_core::Stopwatch::stop_at"><code>stop_at</code></a> for
notes about the chronology of <code>anchor</code>, as well as what happens if
overflow occurs.</p>
<h5 id="examples-16"><a class="doc-anchor" href="#examples-16">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>left = Sw::new();
<span class="kw">let </span><span class="kw-2">mut </span>right = Sw::new_started();
<span class="comment">// perfect swap of left and right running
</span><span class="kw">let </span>now = Instant::now();
left.toggle_at(now);
right.toggle_at(now);
<span class="macro">assert!</span>(left.is_running());
<span class="macro">assert!</span>(right.is_stopped());</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.checked_toggle" class="method"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#465-467">Source</a><h4 class="code-header">pub fn <a href="#method.checked_toggle" class="fn">checked_toggle</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Tries to toggle whether the stopwatch is running or stopped. If the new
elapsed time overflows, returns <code>false</code> without mutating the stopwatch.</p>
<h5 id="examples-17"><a class="doc-anchor" href="#examples-17">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sw = Sw::with_elapsed_started(Duration::MAX);
thread::sleep(Duration::from_millis(<span class="number">100</span>));
<span class="comment">// whoops, new elapsed time can't be Duration::MAX + 100ms
</span><span class="macro">assert!</span>(!sw.checked_toggle());</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.checked_toggle_at" class="method"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#473-480">Source</a><h4 class="code-header">pub fn <a href="#method.checked_toggle_at" class="fn">checked_toggle_at</a>(&amp;mut self, anchor: I) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Tries to toggle whether the stopwatch is running or stopped, as if the
current time were <code>anchor</code>. If the new elapsed time overflows, returns
<code>false</code> without mutating the stopwatch.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.reset" class="method"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#493-495">Source</a><h4 class="code-header">pub fn <a href="#method.reset" class="fn">reset</a>(&amp;mut self)</h4></section></summary><div class="docblock"><p>Stops and resets the elapsed time to zero.</p>
<h5 id="examples-18"><a class="doc-anchor" href="#examples-18">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sw = Sw::with_elapsed_started(Duration::from_secs(<span class="number">1</span>));
sw.reset();
<span class="macro">assert_eq!</span>(sw, Sw::new());</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.reset_in_place" class="method"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#515-517">Source</a><h4 class="code-header">pub fn <a href="#method.reset_in_place" class="fn">reset_in_place</a>(&amp;mut self)</h4></section></summary><div class="docblock"><p>Resets the elapsed time to zero without affecting whether the stopwatch
is running.</p>
<h5 id="examples-19"><a class="doc-anchor" href="#examples-19">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sw = Sw::with_elapsed_started(Duration::from_secs(<span class="number">1</span>));
sw.reset_in_place();
<span class="macro">assert!</span>(sw.is_running());
<span class="comment">// new elapsed time is close to zero
</span><span class="macro">assert!</span>(sw.elapsed() &lt; Duration::from_millis(<span class="number">1</span>));
sw.stop();
sw.reset_in_place();
<span class="macro">assert_eq!</span>(sw, Sw::new());</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.reset_in_place_at" class="method"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#526-528">Source</a><h4 class="code-header">pub fn <a href="#method.reset_in_place_at" class="fn">reset_in_place_at</a>(&amp;mut self, start: I)</h4></section></summary><div class="docblock"><p>Resets the elapsed time to zero without affecting whether the stopwatch
is running.</p>
<h5 id="notes-9"><a class="doc-anchor" href="#notes-9">§</a>Notes</h5>
<p>See <a href="struct.Stopwatch.html#method.start_at" title="method libsw_core::Stopwatch::start_at"><code>start_at</code></a> for notes about the chronology of
<code>anchor</code>.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.set" class="method"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#541-543">Source</a><h4 class="code-header">pub fn <a href="#method.set" class="fn">set</a>(&amp;mut self, new: <a class="struct" href="https://doc.rust-lang.org/1.84.0/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>)</h4></section></summary><div class="docblock"><p>Stops and sets the total elapsed time to <code>new</code>.</p>
<h5 id="examples-20"><a class="doc-anchor" href="#examples-20">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sw = Sw::new();
sw.set(Duration::from_secs(<span class="number">1</span>));
<span class="macro">assert_eq!</span>(sw.elapsed(), Duration::from_secs(<span class="number">1</span>));</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.set_in_place" class="method"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#563-565">Source</a><h4 class="code-header">pub fn <a href="#method.set_in_place" class="fn">set_in_place</a>(&amp;mut self, new: <a class="struct" href="https://doc.rust-lang.org/1.84.0/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>)</h4></section></summary><div class="docblock"><p>Sets the total elapsed time to <code>new</code> without affecting whether the
stopwatch is running.</p>
<h5 id="examples-21"><a class="doc-anchor" href="#examples-21">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sw = Sw::new();
sw.set_in_place(Duration::from_secs(<span class="number">1</span>));
<span class="macro">assert_eq!</span>(sw.elapsed(), Duration::from_secs(<span class="number">1</span>));
<span class="macro">assert!</span>(sw.is_stopped());
sw.start();
sw.set_in_place(Duration::from_secs(<span class="number">2</span>));
<span class="macro">assert!</span>(sw.elapsed() &gt;= Duration::from_secs(<span class="number">2</span>));
<span class="macro">assert!</span>(sw.is_running());</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.set_in_place_at" class="method"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#574-580">Source</a><h4 class="code-header">pub fn <a href="#method.set_in_place_at" class="fn">set_in_place_at</a>(&amp;mut self, new: <a class="struct" href="https://doc.rust-lang.org/1.84.0/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>, anchor: I)</h4></section></summary><div class="docblock"><p>Sets the total elapsed time to <code>new</code> as if the current time were
<code>anchor</code>, and without affecting whether the stopwatch is running.</p>
<h5 id="notes-10"><a class="doc-anchor" href="#notes-10">§</a>Notes</h5>
<p>See <a href="struct.Stopwatch.html#method.start_at" title="method libsw_core::Stopwatch::start_at"><code>start_at</code></a> for notes about the chronology of
<code>anchor</code>.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.replace" class="method"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#595-597">Source</a><h4 class="code-header">pub fn <a href="#method.replace" class="fn">replace</a>(&amp;mut self, new: <a class="struct" href="https://doc.rust-lang.org/1.84.0/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.84.0/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a></h4></section></summary><div class="docblock"><p>Stops and sets the total elapsed time to <code>new</code>, returning the previous
elapsed time.</p>
<h5 id="examples-22"><a class="doc-anchor" href="#examples-22">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sw = Sw::with_elapsed(Duration::from_secs(<span class="number">3</span>));
<span class="kw">let </span>previous = sw.replace(Duration::from_secs(<span class="number">1</span>));
<span class="macro">assert_eq!</span>(previous, Duration::from_secs(<span class="number">3</span>));
<span class="macro">assert_eq!</span>(sw.elapsed(), Duration::from_secs(<span class="number">1</span>));</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.replace_at" class="method"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#606-610">Source</a><h4 class="code-header">pub fn <a href="#method.replace_at" class="fn">replace_at</a>(&amp;mut self, new: <a class="struct" href="https://doc.rust-lang.org/1.84.0/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>, anchor: I) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.84.0/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a></h4></section></summary><div class="docblock"><p>Stops and sets the total elapsed time to <code>new</code>, returning the previous
elapsed time as if the current time were <code>anchor</code>.</p>
<h5 id="notes-11"><a class="doc-anchor" href="#notes-11">§</a>Notes</h5>
<p>See <a href="struct.Stopwatch.html#method.elapsed_at" title="method libsw_core::Stopwatch::elapsed_at"><code>elapsed_at</code></a> for notes about the chronology of
<code>anchor</code>.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.saturating_add" class="method"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#625-628">Source</a><h4 class="code-header">pub const fn <a href="#method.saturating_add" class="fn">saturating_add</a>(self, dur: <a class="struct" href="https://doc.rust-lang.org/1.84.0/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Adds <code>dur</code> to the total elapsed time. If overflow occurred, the total
elapsed time is set to <a href="https://doc.rust-lang.org/1.84.0/core/time/struct.Duration.html#associatedconstant.MAX" title="associated constant core::time::Duration::MAX"><code>Duration::MAX</code></a>.</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sw = Sw::with_elapsed(Duration::from_secs(<span class="number">1</span>));
sw = sw.saturating_add(Duration::from_secs(<span class="number">1</span>));
<span class="macro">assert_eq!</span>(sw.elapsed(), Duration::from_secs(<span class="number">2</span>));
sw = sw.saturating_add(Duration::MAX);
<span class="macro">assert_eq!</span>(sw.elapsed(), Duration::MAX);</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.saturating_sub" class="method"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#650-652">Source</a><h4 class="code-header">pub fn <a href="#method.saturating_sub" class="fn">saturating_sub</a>(self, dur: <a class="struct" href="https://doc.rust-lang.org/1.84.0/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Subtracts <code>dur</code> from the total elapsed time. If underflow occurred, the
total elapsed time is set to <a href="https://doc.rust-lang.org/1.84.0/core/time/struct.Duration.html#associatedconstant.ZERO" title="associated constant core::time::Duration::ZERO"><code>Duration::ZERO</code></a>.</p>
<h5 id="notes-12"><a class="doc-anchor" href="#notes-12">§</a>Notes</h5>
<p>See the documentation for <a href="struct.Stopwatch.html#method.saturating_sub_at" title="method libsw_core::Stopwatch::saturating_sub_at"><code>saturating_sub_at</code></a>
for notes about positive overflow.</p>
<h5 id="examples-23"><a class="doc-anchor" href="#examples-23">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sw = Sw::with_elapsed(Duration::from_secs(<span class="number">1</span>));
sw = sw.saturating_sub(Duration::from_secs(<span class="number">1</span>));
<span class="macro">assert_eq!</span>(sw.elapsed(), Duration::ZERO);
sw = sw.saturating_sub(Duration::from_secs(<span class="number">1</span>));
<span class="macro">assert_eq!</span>(sw.elapsed(), Duration::ZERO);</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.saturating_sub_at" class="method"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#680-685">Source</a><h4 class="code-header">pub fn <a href="#method.saturating_sub_at" class="fn">saturating_sub_at</a>(self, dur: <a class="struct" href="https://doc.rust-lang.org/1.84.0/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>, anchor: I) -&gt; Self</h4></section></summary><div class="docblock"><p>Subtracts <code>dur</code> from the total elapsed time, as if the current time were
<code>anchor</code>. If underflow occurred, the total elapsed time is set to
<a href="https://doc.rust-lang.org/1.84.0/core/time/struct.Duration.html#associatedconstant.ZERO" title="associated constant core::time::Duration::ZERO"><code>Duration::ZERO</code></a>.</p>
<h5 id="notes-13"><a class="doc-anchor" href="#notes-13">§</a>Notes</h5>
<ul>
<li>
<p>If the elapsed time is overflowing (as in, exceeds <a href="https://doc.rust-lang.org/1.84.0/core/time/struct.Duration.html#associatedconstant.MAX" title="associated constant core::time::Duration::MAX"><code>Duration::MAX</code></a>
prior to subtraction), the elapsed time is clamped to
<a href="https://doc.rust-lang.org/1.84.0/core/time/struct.Duration.html#associatedconstant.MAX" title="associated constant core::time::Duration::MAX"><code>Duration::MAX</code></a> and <em>then</em> <code>dur</code> is subtracted from that.</p>
</li>
<li>
<p><code>anchor</code> saturates to the last instant the stopwatch was started.</p>
</li>
</ul>
<h5 id="examples-24"><a class="doc-anchor" href="#examples-24">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sw = Sw::new_started();
thread::sleep(Duration::from_millis(<span class="number">100</span>));
<span class="kw">let </span><span class="kw-2">mut </span>now = Instant::now();
sw = sw.saturating_sub_at(Duration::from_secs(<span class="number">1</span>), now);
<span class="macro">assert_eq!</span>(sw.elapsed_at(now), Duration::ZERO);</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.checked_add" class="method"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#701-709">Source</a><h4 class="code-header">pub const fn <a href="#method.checked_add" class="fn">checked_add</a>(self, dur: <a class="struct" href="https://doc.rust-lang.org/1.84.0/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self&gt;</h4></section></summary><div class="docblock"><p>Adds <code>dur</code> to the total elapsed time. If overflow occurred, returns
<a href="https://doc.rust-lang.org/1.84.0/core/option/enum.Option.html#variant.None" title="variant core::option::Option::None"><code>None</code></a>.</p>
<h5 id="examples-25"><a class="doc-anchor" href="#examples-25">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sw = Sw::new();
sw = sw.checked_add(Duration::from_secs(<span class="number">1</span>)).unwrap();
<span class="macro">assert_eq!</span>(sw.elapsed(), Duration::from_secs(<span class="number">1</span>));
<span class="macro">assert_eq!</span>(sw.checked_add(Duration::MAX), <span class="prelude-val">None</span>);</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.checked_sub" class="method"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#733-735">Source</a><h4 class="code-header">pub fn <a href="#method.checked_sub" class="fn">checked_sub</a>(self, dur: <a class="struct" href="https://doc.rust-lang.org/1.84.0/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self&gt;</h4></section></summary><div class="docblock"><p>Subtracts <code>dur</code> from the total elapsed time. If overflow occurred,
returns <a href="https://doc.rust-lang.org/1.84.0/core/option/enum.Option.html#variant.None" title="variant core::option::Option::None"><code>None</code></a>.</p>
<h5 id="notes-14"><a class="doc-anchor" href="#notes-14">§</a>Notes</h5>
<p>See the documentation for <a href="struct.Stopwatch.html#method.checked_sub_at" title="method libsw_core::Stopwatch::checked_sub_at"><code>checked_sub_at</code></a> for
notes about positive overflow.</p>
<h5 id="examples-26"><a class="doc-anchor" href="#examples-26">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sw = Sw::new();
<span class="macro">assert_eq!</span>(sw.checked_sub(Duration::from_secs(<span class="number">1</span>)), <span class="prelude-val">None</span>);
sw += Duration::from_secs(<span class="number">1</span>);
<span class="macro">assert_eq!</span>(
sw.checked_sub(Duration::from_secs(<span class="number">1</span>)),
<span class="prelude-val">Some</span>(Sw::with_elapsed(Duration::ZERO)),
);</code></pre></div>
</div></details><details class="toggle method-toggle" open><summary><section id="method.checked_sub_at" class="method"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#765-771">Source</a><h4 class="code-header">pub fn <a href="#method.checked_sub_at" class="fn">checked_sub_at</a>(self, dur: <a class="struct" href="https://doc.rust-lang.org/1.84.0/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>, anchor: I) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Self&gt;</h4></section></summary><div class="docblock"><p>Subtracts <code>dur</code> from the total elapsed time, as if the current time were
<code>anchor</code>. If overflow occurred, returns <a href="https://doc.rust-lang.org/1.84.0/core/option/enum.Option.html#variant.None" title="variant core::option::Option::None"><code>None</code></a>.</p>
<h5 id="notes-15"><a class="doc-anchor" href="#notes-15">§</a>Notes</h5>
<ul>
<li>
<p>Overflow occurs if the elapsed time overflows prior to subtraction.</p>
</li>
<li>
<p><code>anchor</code> saturates to the last instant the stopwatch was started.</p>
</li>
</ul>
<h5 id="examples-27"><a class="doc-anchor" href="#examples-27">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>sw = Sw::new_started();
thread::sleep(Duration::from_millis(<span class="number">100</span>));
<span class="kw">let </span>now = Instant::now();
<span class="comment">// underflow yields `None`
</span><span class="macro">assert_eq!</span>(sw.checked_sub_at(Duration::from_secs(<span class="number">1</span>), now), <span class="prelude-val">None</span>);
<span class="comment">// positive overflow yields `None`
</span>sw.set_in_place(Duration::MAX);
<span class="macro">assert_eq!</span>(sw.checked_sub(Duration::ZERO), <span class="prelude-val">None</span>);
<span class="macro">assert_eq!</span>(sw.checked_sub(Duration::from_secs(<span class="number">2</span>)), <span class="prelude-val">None</span>);</code></pre></div>
</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Add%3CDuration%3E-for-Stopwatch%3CI%3E" class="impl"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#847-865">Source</a><a href="#impl-Add%3CDuration%3E-for-Stopwatch%3CI%3E" class="anchor">§</a><h3 class="code-header">impl&lt;I: <a class="trait" href="trait.Instant.html" title="trait libsw_core::Instant">Instant</a>&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/ops/arith/trait.Add.html" title="trait core::ops::arith::Add">Add</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.84.0/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>&gt; for <a class="struct" href="struct.Stopwatch.html" title="struct libsw_core::Stopwatch">Stopwatch</a>&lt;I&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.add" class="method trait-impl"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#861-864">Source</a><a href="#method.add" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/ops/arith/trait.Add.html#tymethod.add" class="fn">add</a>(self, dur: <a class="struct" href="https://doc.rust-lang.org/1.84.0/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>) -&gt; Self::<a class="associatedtype" href="https://doc.rust-lang.org/1.84.0/core/ops/arith/trait.Add.html#associatedtype.Output" title="type core::ops::arith::Add::Output">Output</a></h4></section></summary><div class="docblock"><p>Add <code>dur</code> to <code>self</code>.</p>
<p>Currently this is an alias to <a href="struct.Stopwatch.html#method.checked_add" title="method libsw_core::Stopwatch::checked_add"><code>Stopwatch::checked_add</code></a>, but that
is not a stable guarentee. If you need a guarentee on the
implementation, use the <a href="struct.Stopwatch.html#method.checked_add" title="method libsw_core::Stopwatch::checked_add">checked</a> or
<a href="struct.Stopwatch.html#method.checked_add" title="method libsw_core::Stopwatch::checked_add">saturating</a> methods explicitly.</p>
<h5 id="panics"><a class="doc-anchor" href="#panics">§</a>Panics</h5>
<p>Panics if overflow occurs.</p>
</div></details><details class="toggle" open><summary><section id="associatedtype.Output" class="associatedtype trait-impl"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#848">Source</a><a href="#associatedtype.Output" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.84.0/core/ops/arith/trait.Add.html#associatedtype.Output" class="associatedtype">Output</a> = <a class="struct" href="struct.Stopwatch.html" title="struct libsw_core::Stopwatch">Stopwatch</a>&lt;I&gt;</h4></section></summary><div class='docblock'>The resulting type after applying the <code>+</code> operator.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-AddAssign%3CDuration%3E-for-Stopwatch%3CI%3E" class="impl"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#887-892">Source</a><a href="#impl-AddAssign%3CDuration%3E-for-Stopwatch%3CI%3E" class="anchor">§</a><h3 class="code-header">impl&lt;I: <a class="trait" href="trait.Instant.html" title="trait libsw_core::Instant">Instant</a>&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/ops/arith/trait.AddAssign.html" title="trait core::ops::arith::AddAssign">AddAssign</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.84.0/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>&gt; for <a class="struct" href="struct.Stopwatch.html" title="struct libsw_core::Stopwatch">Stopwatch</a>&lt;I&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.add_assign" class="method trait-impl"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#889-891">Source</a><a href="#method.add_assign" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/ops/arith/trait.AddAssign.html#tymethod.add_assign" class="fn">add_assign</a>(&amp;mut self, dur: <a class="struct" href="https://doc.rust-lang.org/1.84.0/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>)</h4></section></summary><div class='docblock'>Performs the <code>+=</code> operation. <a href="https://doc.rust-lang.org/1.84.0/core/ops/arith/trait.AddAssign.html#tymethod.add_assign">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-Stopwatch%3CI%3E" class="impl"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#40">Source</a><a href="#impl-Clone-for-Stopwatch%3CI%3E" class="anchor">§</a><h3 class="code-header">impl&lt;I: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + <a class="trait" href="trait.Instant.html" title="trait libsw_core::Instant">Instant</a>&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.Stopwatch.html" title="struct libsw_core::Stopwatch">Stopwatch</a>&lt;I&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#40">Source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.Stopwatch.html" title="struct libsw_core::Stopwatch">Stopwatch</a>&lt;I&gt;</h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/1.84.0/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.84.0/src/core/clone.rs.html#174">Source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: &amp;Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/1.84.0/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-Stopwatch%3CI%3E" class="impl"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#40">Source</a><a href="#impl-Debug-for-Stopwatch%3CI%3E" class="anchor">§</a><h3 class="code-header">impl&lt;I: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> + <a class="trait" href="trait.Instant.html" title="trait libsw_core::Instant">Instant</a>&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.Stopwatch.html" title="struct libsw_core::Stopwatch">Stopwatch</a>&lt;I&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#40">Source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/1.84.0/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/1.84.0/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/1.84.0/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Default-for-Stopwatch%3CI%3E" class="impl"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#840-845">Source</a><a href="#impl-Default-for-Stopwatch%3CI%3E" class="anchor">§</a><h3 class="code-header">impl&lt;I: <a class="trait" href="trait.Instant.html" title="trait libsw_core::Instant">Instant</a>&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.Stopwatch.html" title="struct libsw_core::Stopwatch">Stopwatch</a>&lt;I&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.default" class="method trait-impl"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#842-844">Source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -&gt; Self</h4></section></summary><div class="docblock"><p>Returns the default stopwatch. Same as calling <a href="struct.Stopwatch.html#method.new" title="associated function libsw_core::Stopwatch::new"><code>Stopwatch::new</code></a>.</p>
</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Hash-for-Stopwatch%3CI%3E" class="impl"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#941-960">Source</a><a href="#impl-Hash-for-Stopwatch%3CI%3E" class="anchor">§</a><h3 class="code-header">impl&lt;I: <a class="trait" href="trait.Instant.html" title="trait libsw_core::Instant">Instant</a> + <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a>&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="struct" href="struct.Stopwatch.html" title="struct libsw_core::Stopwatch">Stopwatch</a>&lt;I&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.hash" class="method trait-impl"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#949-959">Source</a><a href="#method.hash" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/hash/trait.Hash.html#tymethod.hash" class="fn">hash</a>&lt;H: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>&gt;(&amp;self, state: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.reference.html">&amp;mut H</a>)</h4></section></summary><div class="docblock"><p>Hashes <code>self</code> and <code>rhs</code>. These hashes are not dependent on the time of
measurement, so they can be used to test equality.</p>
<h5 id="support"><a class="doc-anchor" href="#support">§</a>Support</h5>
<p><code>I</code> (the <a href="trait.Instant.html" title="trait libsw_core::Instant"><code>Instant</code></a> type used by the stopwatch) must implement
<a href="https://doc.rust-lang.org/1.84.0/core/hash/trait.Hash.html" title="trait core::hash::Hash"><code>Hash</code></a>.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.hash_slice" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="src" href="https://doc.rust-lang.org/1.84.0/src/core/hash/mod.rs.html#235-237">Source</a></span><a href="#method.hash_slice" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/hash/trait.Hash.html#method.hash_slice" class="fn">hash_slice</a>&lt;H&gt;(data: &amp;[Self], state: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.reference.html">&amp;mut H</a>)<div class="where">where
H: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,
Self: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/1.84.0/core/hash/trait.Hasher.html" title="trait core::hash::Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/1.84.0/core/hash/trait.Hash.html#method.hash_slice">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-Stopwatch%3CI%3E" class="impl"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#901-937">Source</a><a href="#impl-PartialEq-for-Stopwatch%3CI%3E" class="anchor">§</a><h3 class="code-header">impl&lt;I: <a class="trait" href="trait.Instant.html" title="trait libsw_core::Instant">Instant</a>&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.Stopwatch.html" title="struct libsw_core::Stopwatch">Stopwatch</a>&lt;I&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#906-936">Source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, rhs: &amp;Self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Tests for equality between <code>self</code> and <code>rhs</code>.</p>
<p>Stopwatches are equal if whether they are running and their elapsed time
are equal.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.84.0/src/core/cmp.rs.html#261">Source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Tests for <code>!=</code>. The default implementation is almost always sufficient,
and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Sub%3CDuration%3E-for-Stopwatch%3CI%3E" class="impl"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#867-885">Source</a><a href="#impl-Sub%3CDuration%3E-for-Stopwatch%3CI%3E" class="anchor">§</a><h3 class="code-header">impl&lt;I: <a class="trait" href="trait.Instant.html" title="trait libsw_core::Instant">Instant</a>&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/ops/arith/trait.Sub.html" title="trait core::ops::arith::Sub">Sub</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.84.0/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>&gt; for <a class="struct" href="struct.Stopwatch.html" title="struct libsw_core::Stopwatch">Stopwatch</a>&lt;I&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.sub" class="method trait-impl"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#881-884">Source</a><a href="#method.sub" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/ops/arith/trait.Sub.html#tymethod.sub" class="fn">sub</a>(self, dur: <a class="struct" href="https://doc.rust-lang.org/1.84.0/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>) -&gt; Self::<a class="associatedtype" href="https://doc.rust-lang.org/1.84.0/core/ops/arith/trait.Sub.html#associatedtype.Output" title="type core::ops::arith::Sub::Output">Output</a></h4></section></summary><div class="docblock"><p>Subtract <code>dur</code> from <code>self</code>.</p>
<p>Currently this is an alias to <a href="struct.Stopwatch.html#method.checked_sub" title="method libsw_core::Stopwatch::checked_sub"><code>Stopwatch::checked_sub</code></a>, but that
is not a stable guarentee. If you need a guarentee on the
implementation, use the <a href="struct.Stopwatch.html#method.checked_sub" title="method libsw_core::Stopwatch::checked_sub">checked</a> or
<a href="struct.Stopwatch.html#method.checked_sub" title="method libsw_core::Stopwatch::checked_sub">saturating</a> methods explicitly.</p>
<h5 id="panics-1"><a class="doc-anchor" href="#panics-1">§</a>Panics</h5>
<p>Panics if overflow occurs.</p>
</div></details><details class="toggle" open><summary><section id="associatedtype.Output-1" class="associatedtype trait-impl"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#868">Source</a><a href="#associatedtype.Output-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.84.0/core/ops/arith/trait.Sub.html#associatedtype.Output" class="associatedtype">Output</a> = <a class="struct" href="struct.Stopwatch.html" title="struct libsw_core::Stopwatch">Stopwatch</a>&lt;I&gt;</h4></section></summary><div class='docblock'>The resulting type after applying the <code>-</code> operator.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-SubAssign%3CDuration%3E-for-Stopwatch%3CI%3E" class="impl"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#894-899">Source</a><a href="#impl-SubAssign%3CDuration%3E-for-Stopwatch%3CI%3E" class="anchor">§</a><h3 class="code-header">impl&lt;I: <a class="trait" href="trait.Instant.html" title="trait libsw_core::Instant">Instant</a>&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/ops/arith/trait.SubAssign.html" title="trait core::ops::arith::SubAssign">SubAssign</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.84.0/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>&gt; for <a class="struct" href="struct.Stopwatch.html" title="struct libsw_core::Stopwatch">Stopwatch</a>&lt;I&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.sub_assign" class="method trait-impl"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#896-898">Source</a><a href="#method.sub_assign" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/ops/arith/trait.SubAssign.html#tymethod.sub_assign" class="fn">sub_assign</a>(&amp;mut self, dur: <a class="struct" href="https://doc.rust-lang.org/1.84.0/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>)</h4></section></summary><div class='docblock'>Performs the <code>-=</code> operation. <a href="https://doc.rust-lang.org/1.84.0/core/ops/arith/trait.SubAssign.html#tymethod.sub_assign">Read more</a></div></details></div></details><section id="impl-Copy-for-Stopwatch%3CI%3E" class="impl"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#40">Source</a><a href="#impl-Copy-for-Stopwatch%3CI%3E" class="anchor">§</a><h3 class="code-header">impl&lt;I: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> + <a class="trait" href="trait.Instant.html" title="trait libsw_core::Instant">Instant</a>&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="struct" href="struct.Stopwatch.html" title="struct libsw_core::Stopwatch">Stopwatch</a>&lt;I&gt;</h3></section><section id="impl-Eq-for-Stopwatch%3CI%3E" class="impl"><a class="src rightside" href="../src/libsw_core/stopwatch.rs.html#939">Source</a><a href="#impl-Eq-for-Stopwatch%3CI%3E" class="anchor">§</a><h3 class="code-header">impl&lt;I: <a class="trait" href="trait.Instant.html" title="trait libsw_core::Instant">Instant</a>&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.Stopwatch.html" title="struct libsw_core::Stopwatch">Stopwatch</a>&lt;I&gt;</h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-Stopwatch%3CI%3E" class="impl"><a href="#impl-Freeze-for-Stopwatch%3CI%3E" class="anchor">§</a><h3 class="code-header">impl&lt;I&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.Stopwatch.html" title="struct libsw_core::Stopwatch">Stopwatch</a>&lt;I&gt;<div class="where">where
I: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a>,</div></h3></section><section id="impl-RefUnwindSafe-for-Stopwatch%3CI%3E" class="impl"><a href="#impl-RefUnwindSafe-for-Stopwatch%3CI%3E" class="anchor">§</a><h3 class="code-header">impl&lt;I&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Stopwatch.html" title="struct libsw_core::Stopwatch">Stopwatch</a>&lt;I&gt;<div class="where">where
I: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,</div></h3></section><section id="impl-Send-for-Stopwatch%3CI%3E" class="impl"><a href="#impl-Send-for-Stopwatch%3CI%3E" class="anchor">§</a><h3 class="code-header">impl&lt;I&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Stopwatch.html" title="struct libsw_core::Stopwatch">Stopwatch</a>&lt;I&gt;<div class="where">where
I: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</div></h3></section><section id="impl-Sync-for-Stopwatch%3CI%3E" class="impl"><a href="#impl-Sync-for-Stopwatch%3CI%3E" class="anchor">§</a><h3 class="code-header">impl&lt;I&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Stopwatch.html" title="struct libsw_core::Stopwatch">Stopwatch</a>&lt;I&gt;<div class="where">where
I: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</div></h3></section><section id="impl-Unpin-for-Stopwatch%3CI%3E" class="impl"><a href="#impl-Unpin-for-Stopwatch%3CI%3E" class="anchor">§</a><h3 class="code-header">impl&lt;I&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Stopwatch.html" title="struct libsw_core::Stopwatch">Stopwatch</a>&lt;I&gt;<div class="where">where
I: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,</div></h3></section><section id="impl-UnwindSafe-for-Stopwatch%3CI%3E" class="impl"><a href="#impl-UnwindSafe-for-Stopwatch%3CI%3E" class="anchor">§</a><h3 class="code-header">impl&lt;I&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Stopwatch.html" title="struct libsw_core::Stopwatch">Stopwatch</a>&lt;I&gt;<div class="where">where
I: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a>,</div></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/any.rs.html#138">Source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/any.rs.html#139">Source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.84.0/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/1.84.0/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/borrow.rs.html#209">Source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
T: ?<a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/borrow.rs.html#211">Source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/1.84.0/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/borrow.rs.html#217">Source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
T: ?<a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/borrow.rs.html#218">Source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/1.84.0/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-CloneToUninit-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/clone.rs.html#273">Source</a><a href="#impl-CloneToUninit-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/clone/trait.CloneToUninit.html" title="trait core::clone::CloneToUninit">CloneToUninit</a> for T<div class="where">where
T: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone_to_uninit" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/clone.rs.html#275">Source</a><a href="#method.clone_to_uninit" class="anchor">§</a><h4 class="code-header">unsafe fn <a href="https://doc.rust-lang.org/1.84.0/core/clone/trait.CloneToUninit.html#tymethod.clone_to_uninit" class="fn">clone_to_uninit</a>(&amp;self, dst: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.pointer.html">*mut </a><a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.u8.html">u8</a>)</h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>clone_to_uninit</code>)</span></div></span><div class='docblock'>Performs copy-assignment from <code>self</code> to <code>dst</code>. <a href="https://doc.rust-lang.org/1.84.0/core/clone/trait.CloneToUninit.html#tymethod.clone_to_uninit">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#765">Source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#768">Source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#748-750">Source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#758">Source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/convert/trait.Into.html#tymethod.into" class="fn">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><a href="https://doc.rust-lang.org/1.84.0/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/alloc/borrow.rs.html#82-84">Source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
T: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/alloc/borrow.rs.html#86">Source</a><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.84.0/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/alloc/borrow.rs.html#87">Source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/1.84.0/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/alloc/borrow.rs.html#91">Source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/1.84.0/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#805-807">Source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#809">Source</a><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#812">Source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#790-792">Source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#794">Source</a><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#797">Source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>