blob: be10e5f9597c9d2e87ef349076bb6dfa31df136b [file] [log] [blame]
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Registers I/O resources."><meta name="keywords" content="rust, rustlang, rust-lang, Registry"><title>Registry in mio - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" href="../normalize.css"><link rel="stylesheet" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" href="../ayu.css" disabled><link rel="stylesheet" href="../dark.css" disabled><link rel="stylesheet" href="../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../storage.js"></script><script defer src="sidebar-items.js"></script><script defer src="../main.js"></script><noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../favicon.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">&#9776;</button><a class="sidebar-logo" href="../mio/index.html"><div class="logo-container"><img class="rust-logo" src="../rust-logo.svg" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../mio/index.html"><div class="logo-container"><img class="rust-logo" src="../rust-logo.svg" alt="logo"></div></a><h2 class="location"><a href="#">Registry</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.deregister">deregister</a></li><li><a href="#method.register">register</a></li><li><a href="#method.reregister">reregister</a></li><li><a href="#method.try_clone">try_clone</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-AsRawFd-for-Registry">AsRawFd</a></li><li><a href="#impl-Debug-for-Registry">Debug</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-Registry">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Registry">Send</a></li><li><a href="#impl-Sync-for-Registry">Sync</a></li><li><a href="#impl-Unpin-for-Registry">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Registry">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-Registry">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-Registry">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-Registry">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-Registry">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-Registry">Into&lt;U&gt;</a></li><li><a href="#impl-TryFrom%3CU%3E-for-Registry">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-Registry">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In mio</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../wheel.svg"></a></div></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="index.html">mio</a>::<wbr><a class="struct" href="#">Registry</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../clipboard.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../src/mio/poll.rs.html#253-255">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">&#x2212;</span>]</a></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct Registry { /* private fields */ }</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Registers I/O resources.</p>
</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Registry" class="impl has-srclink"><a class="srclink rightside" href="../src/mio/poll.rs.html#427-691">source</a><a href="#impl-Registry" class="anchor"></a><h3 class="code-header">impl <a class="struct" href="struct.Registry.html" title="struct mio::Registry">Registry</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.register" class="method has-srclink"><a class="srclink rightside" href="../src/mio/poll.rs.html#527-537">source</a><h4 class="code-header">pub fn <a href="#method.register" class="fnname">register</a>&lt;S&gt;(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self,<br>&nbsp;&nbsp;&nbsp;&nbsp;source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut </a>S,<br>&nbsp;&nbsp;&nbsp;&nbsp;token: <a class="struct" href="struct.Token.html" title="struct mio::Token">Token</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;interests: <a class="struct" href="struct.Interest.html" title="struct mio::Interest">Interest</a><br>) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;S: <a class="trait" href="event/trait.Source.html" title="trait mio::event::Source">Source</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class="docblock"><p>Register an <a href="./event/trait.Source.html"><code>event::Source</code></a> with the <code>Poll</code> instance.</p>
<p>Once registered, the <code>Poll</code> instance will monitor the event source for
readiness state changes. When it notices a state change, it will return
a readiness event for the handle the next time <a href="struct.Poll.html#method.poll"><code>poll</code></a> is called.</p>
<p>See <a href="struct.Poll.html#method.poll"><code>Poll</code></a> docs for a high level overview.</p>
<h5 id="arguments"><a href="#arguments">Arguments</a></h5>
<p><code>source: &amp;mut S: event::Source</code>: This is the source of events that the
<code>Poll</code> instance should monitor for readiness state changes.</p>
<p><code>token: Token</code>: The caller picks a token to associate with the socket.
When <a href="struct.Poll.html#method.poll"><code>poll</code></a> returns an event for the handle, this token is included.
This allows the caller to map the event to its source. The token
associated with the <code>event::Source</code> can be changed at any time by
calling <a href="struct.Registry.html#method.reregister"><code>reregister</code></a>.</p>
<p>See documentation on <a href="struct.Token.html"><code>Token</code></a> for an example showing how to pick
<a href="struct.Token.html"><code>Token</code></a> values.</p>
<p><code>interest: Interest</code>: Specifies which operations <code>Poll</code> should monitor
for readiness. <code>Poll</code> will only return readiness events for operations
specified by this argument.</p>
<p>If a socket is registered with readable interest and the socket becomes
writable, no event will be returned from <a href="struct.Poll.html#method.poll"><code>poll</code></a>.</p>
<p>The readiness interest for an <code>event::Source</code> can be changed at any time
by calling <a href="struct.Registry.html#method.reregister"><code>reregister</code></a>.</p>
<h5 id="notes"><a href="#notes">Notes</a></h5>
<p>Callers must ensure that if a source being registered with a <code>Poll</code>
instance was previously registered with that <code>Poll</code> instance, then a
call to <a href="struct.Registry.html#method.deregister"><code>deregister</code></a> has already occurred. Consecutive calls to
<code>register</code> is unspecified behavior.</p>
<p>Unless otherwise specified, the caller should assume that once an event
source is registered with a <code>Poll</code> instance, it is bound to that <code>Poll</code>
instance for the lifetime of the event source. This remains true even
if the event source is deregistered from the poll instance using
<a href="struct.Registry.html#method.deregister"><code>deregister</code></a>.</p>
<h5 id="examples"><a href="#examples">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>mio::{Events, Poll, Interest, Token};
<span class="kw">use </span>mio::net::TcpStream;
<span class="kw">use </span>std::net::SocketAddr;
<span class="kw">use </span>std::time::{Duration, Instant};
<span class="kw">let </span><span class="kw-2">mut </span>poll = Poll::new()<span class="question-mark">?</span>;
<span class="kw">let </span>address: SocketAddr = <span class="string">&quot;127.0.0.1:0&quot;</span>.parse()<span class="question-mark">?</span>;
<span class="kw">let </span>listener = net::TcpListener::bind(address)<span class="question-mark">?</span>;
<span class="kw">let </span><span class="kw-2">mut </span>socket = TcpStream::connect(listener.local_addr()<span class="question-mark">?</span>)<span class="question-mark">?</span>;
<span class="comment">// Register the socket with `poll`
</span>poll.registry().register(
<span class="kw-2">&amp;mut </span>socket,
Token(<span class="number">0</span>),
Interest::READABLE | Interest::WRITABLE)<span class="question-mark">?</span>;
<span class="kw">let </span><span class="kw-2">mut </span>events = Events::with_capacity(<span class="number">1024</span>);
<span class="kw">let </span>start = Instant::now();
<span class="kw">let </span>timeout = Duration::from_millis(<span class="number">500</span>);
<span class="kw">loop </span>{
<span class="kw">let </span>elapsed = start.elapsed();
<span class="kw">if </span>elapsed &gt;= timeout {
<span class="comment">// Connection timed out
</span><span class="kw">return </span><span class="prelude-val">Ok</span>(());
}
<span class="kw">let </span>remaining = timeout - elapsed;
poll.poll(<span class="kw-2">&amp;mut </span>events, <span class="prelude-val">Some</span>(remaining))<span class="question-mark">?</span>;
<span class="kw">for </span>event <span class="kw">in </span><span class="kw-2">&amp;</span>events {
<span class="kw">if </span>event.token() == Token(<span class="number">0</span>) {
<span class="comment">// Something (probably) happened on the socket.
</span><span class="kw">return </span><span class="prelude-val">Ok</span>(());
}
}
}</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.reregister" class="method has-srclink"><a class="srclink rightside" href="../src/mio/poll.rs.html#595-605">source</a><h4 class="code-header">pub fn <a href="#method.reregister" class="fnname">reregister</a>&lt;S&gt;(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self,<br>&nbsp;&nbsp;&nbsp;&nbsp;source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut </a>S,<br>&nbsp;&nbsp;&nbsp;&nbsp;token: <a class="struct" href="struct.Token.html" title="struct mio::Token">Token</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;interests: <a class="struct" href="struct.Interest.html" title="struct mio::Interest">Interest</a><br>) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;S: <a class="trait" href="event/trait.Source.html" title="trait mio::event::Source">Source</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class="docblock"><p>Re-register an <a href="./event/trait.Source.html"><code>event::Source</code></a> with the <code>Poll</code> instance.</p>
<p>Re-registering an event source allows changing the details of the
registration. Specifically, it allows updating the associated <code>token</code>
and <code>interests</code> specified in previous <code>register</code> and <code>reregister</code> calls.</p>
<p>The <code>reregister</code> arguments fully override the previous values. In other
words, if a socket is registered with <a href="./event/struct.Event.html#is_readable"><code>readable</code></a> interest and the call
to <code>reregister</code> specifies <a href="./event/struct.Event.html#is_writable"><code>writable</code></a>, then read interest is no longer
requested for the handle.</p>
<p>The event source must have previously been registered with this instance
of <code>Poll</code>, otherwise the behavior is unspecified.</p>
<p>See the <a href="struct.Registry.html#method.register"><code>register</code></a> documentation for details about the function
arguments and see the <a href="struct.Poll.html"><code>struct</code></a> docs for a high level overview of
polling.</p>
<h5 id="examples-1"><a href="#examples-1">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>mio::{Poll, Interest, Token};
<span class="kw">use </span>mio::net::TcpStream;
<span class="kw">use </span>std::net::SocketAddr;
<span class="kw">let </span>poll = Poll::new()<span class="question-mark">?</span>;
<span class="kw">let </span>address: SocketAddr = <span class="string">&quot;127.0.0.1:0&quot;</span>.parse()<span class="question-mark">?</span>;
<span class="kw">let </span>listener = net::TcpListener::bind(address)<span class="question-mark">?</span>;
<span class="kw">let </span><span class="kw-2">mut </span>socket = TcpStream::connect(listener.local_addr()<span class="question-mark">?</span>)<span class="question-mark">?</span>;
<span class="comment">// Register the socket with `poll`, requesting readable
</span>poll.registry().register(
<span class="kw-2">&amp;mut </span>socket,
Token(<span class="number">0</span>),
Interest::READABLE)<span class="question-mark">?</span>;
<span class="comment">// Reregister the socket specifying write interest instead. Even though
// the token is the same it must be specified.
</span>poll.registry().reregister(
<span class="kw-2">&amp;mut </span>socket,
Token(<span class="number">0</span>),
Interest::WRITABLE)<span class="question-mark">?</span>;</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.deregister" class="method has-srclink"><a class="srclink rightside" href="../src/mio/poll.rs.html#658-664">source</a><h4 class="code-header">pub fn <a href="#method.deregister" class="fnname">deregister</a>&lt;S&gt;(&amp;self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut </a>S) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;S: <a class="trait" href="event/trait.Source.html" title="trait mio::event::Source">Source</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section></summary><div class="docblock"><p>Deregister an <a href="event/trait.Source.html" title="event::Source"><code>event::Source</code></a> with the <code>Poll</code> instance.</p>
<p>When an event source is deregistered, the <code>Poll</code> instance will no longer
monitor it for readiness state changes. Deregistering clears up any
internal resources needed to track the handle. After an explicit call
to this method completes, it is guaranteed that the token previously
registered to this handle will not be returned by a future poll, so long
as a happens-before relationship is established between this call and
the poll.</p>
<p>The event source must have previously been registered with this instance
of <code>Poll</code>, otherwise the behavior is unspecified.</p>
<p>A handle can be passed back to <code>register</code> after it has been
deregistered; however, it must be passed back to the <strong>same</strong> <code>Poll</code>
instance, otherwise the behavior is unspecified.</p>
<h5 id="examples-2"><a href="#examples-2">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>mio::{Events, Poll, Interest, Token};
<span class="kw">use </span>mio::net::TcpStream;
<span class="kw">use </span>std::net::SocketAddr;
<span class="kw">use </span>std::time::Duration;
<span class="kw">let </span><span class="kw-2">mut </span>poll = Poll::new()<span class="question-mark">?</span>;
<span class="kw">let </span>address: SocketAddr = <span class="string">&quot;127.0.0.1:0&quot;</span>.parse()<span class="question-mark">?</span>;
<span class="kw">let </span>listener = net::TcpListener::bind(address)<span class="question-mark">?</span>;
<span class="kw">let </span><span class="kw-2">mut </span>socket = TcpStream::connect(listener.local_addr()<span class="question-mark">?</span>)<span class="question-mark">?</span>;
<span class="comment">// Register the socket with `poll`
</span>poll.registry().register(
<span class="kw-2">&amp;mut </span>socket,
Token(<span class="number">0</span>),
Interest::READABLE)<span class="question-mark">?</span>;
poll.registry().deregister(<span class="kw-2">&amp;mut </span>socket)<span class="question-mark">?</span>;
<span class="kw">let </span><span class="kw-2">mut </span>events = Events::with_capacity(<span class="number">1024</span>);
<span class="comment">// Set a timeout because this poll should never receive any events.
</span>poll.poll(<span class="kw-2">&amp;mut </span>events, <span class="prelude-val">Some</span>(Duration::from_secs(<span class="number">1</span>)))<span class="question-mark">?</span>;
<span class="macro">assert!</span>(events.is_empty());</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_clone" class="method has-srclink"><a class="srclink rightside" href="../src/mio/poll.rs.html#670-674">source</a><h4 class="code-header">pub fn <a href="#method.try_clone" class="fnname">try_clone</a>(&amp;self) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a>&lt;<a class="struct" href="struct.Registry.html" title="struct mio::Registry">Registry</a>&gt;</h4></section></summary><div class="docblock"><p>Creates a new independently owned <code>Registry</code>.</p>
<p>Event sources registered with this <code>Registry</code> will be registered with
the original <code>Registry</code> and <code>Poll</code> instance.</p>
</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-AsRawFd-for-Registry" class="impl has-srclink"><a class="srclink rightside" href="../src/mio/poll.rs.html#700-704">source</a><a href="#impl-AsRawFd-for-Registry" class="anchor"></a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/std/os/fd/raw/trait.AsRawFd.html" title="trait std::os::fd::raw::AsRawFd">AsRawFd</a> for <a class="struct" href="struct.Registry.html" title="struct mio::Registry">Registry</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.as_raw_fd" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/mio/poll.rs.html#701-703">source</a><a href="#method.as_raw_fd" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/std/os/fd/raw/trait.AsRawFd.html#tymethod.as_raw_fd" class="fnname">as_raw_fd</a>(&amp;self) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/std/os/fd/raw/type.RawFd.html" title="type std::os::fd::raw::RawFd">RawFd</a></h4></section></summary><div class='docblock'>Extracts the raw file descriptor. <a href="https://doc.rust-lang.org/nightly/std/os/fd/raw/trait.AsRawFd.html#tymethod.as_raw_fd">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-Registry" class="impl has-srclink"><a class="srclink rightside" href="../src/mio/poll.rs.html#693-697">source</a><a href="#impl-Debug-for-Registry" class="anchor"></a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.Registry.html" title="struct mio::Registry">Registry</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/mio/poll.rs.html#694-696">source</a><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fnname">fmt</a>(&amp;self, fmt: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/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/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-Registry" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-Registry" class="anchor"></a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Registry.html" title="struct mio::Registry">Registry</a></h3></section><section id="impl-Send-for-Registry" class="impl has-srclink"><a href="#impl-Send-for-Registry" class="anchor"></a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Registry.html" title="struct mio::Registry">Registry</a></h3></section><section id="impl-Sync-for-Registry" class="impl has-srclink"><a href="#impl-Sync-for-Registry" class="anchor"></a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Registry.html" title="struct mio::Registry">Registry</a></h3></section><section id="impl-Unpin-for-Registry" class="impl has-srclink"><a href="#impl-Unpin-for-Registry" class="anchor"></a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Registry.html" title="struct mio::Registry">Registry</a></h3></section><section id="impl-UnwindSafe-for-Registry" class="impl has-srclink"><a href="#impl-UnwindSafe-for-Registry" class="anchor"></a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Registry.html" title="struct mio::Registry">Registry</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-Registry" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-Registry" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/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/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-Registry" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-Registry" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-Registry" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-Registry" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-Registry" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-Registry" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/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="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-Registry" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-Registry" class="anchor"></a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
<p>That is, this conversion is whatever the implementation of
<code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-Registry" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-Registry" class="anchor"></a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/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="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/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/nightly/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/nightly/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="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-Registry" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-Registry" class="anchor"></a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/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/nightly/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="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/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/nightly/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/nightly/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><div id="rustdoc-vars" data-root-path="../" data-current-crate="mio" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.66.0-nightly (5c8bff74b 2022-10-21)" ></div></body></html>