Now a REAL lib
This commit is contained in:
		
							
								
								
									
										59
									
								
								doc/rustix/io/epoll/index.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								doc/rustix/io/epoll/index.html
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,59 @@ | ||||
| <!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="epoll support."><meta name="keywords" content="rust, rustlang, rust-lang, epoll"><title>rustix::io::epoll - 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" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.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 mod"><!--[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">☰</button><a class="sidebar-logo" href="../../../rustix/index.html"><div class="logo-container"><img class="rust-logo" src="../../../rust-logo.svg" alt="logo"></div></a><h2 class="location"></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../rustix/index.html"><div class="logo-container"><img class="rust-logo" src="../../../rust-logo.svg" alt="logo"></div></a><h2 class="location"><a href="#">Module epoll</a></h2><div class="sidebar-elems"><section><div class="block"><ul><li><a href="#structs">Structs</a></li><li><a href="#traits">Traits</a></li></ul></div></section></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../rustix/index.html"><img class="rust-logo" src="../../../rust-logo.svg" alt="logo"></a><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"><button type="button">?</button></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></div><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn"><span class="in-band">Module <a href="../../index.html">rustix</a>::<wbr><a href="../index.html">io</a>::<wbr><a class="mod" href="#">epoll</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></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/rustix/backend/linux_raw/io/epoll.rs.html#1-404">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>epoll support.</p> | ||||
| <p>This is an experiment, and it isn’t yet clear whether epoll is the right | ||||
| level of abstraction at which to introduce safety. But it works fairly well | ||||
| in simple examples 🙂.</p> | ||||
| <h2 id="examples"><a href="#examples">Examples</a></h2> | ||||
| <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">io_lifetimes::AsFd</span>; | ||||
| <span class="kw">use</span> <span class="ident">rustix::io::epoll</span>::{<span class="self">self</span>, <span class="ident">Epoll</span>}; | ||||
| <span class="kw">use</span> <span class="ident">rustix::io</span>::{<span class="ident">ioctl_fionbio</span>, <span class="ident">read</span>, <span class="ident">write</span>}; | ||||
| <span class="kw">use</span> <span class="ident">rustix::net</span>::{ | ||||
|     <span class="ident">accept</span>, <span class="ident">bind_v4</span>, <span class="ident">listen</span>, <span class="ident">socket</span>, <span class="ident">AddressFamily</span>, <span class="ident">Ipv4Addr</span>, <span class="ident">Protocol</span>, <span class="ident">SocketAddrV4</span>, | ||||
|     <span class="ident">SocketType</span>, | ||||
| }; | ||||
| <span class="kw">use</span> <span class="ident">std::os::unix::io::AsRawFd</span>; | ||||
|  | ||||
| <span class="comment">// Create a socket and listen on it.</span> | ||||
| <span class="kw">let</span> <span class="ident">listen_sock</span> <span class="op">=</span> <span class="ident">socket</span>(<span class="ident">AddressFamily::INET</span>, <span class="ident">SocketType::STREAM</span>, <span class="ident">Protocol::default</span>())<span class="question-mark">?</span>; | ||||
| <span class="ident">bind_v4</span>(<span class="kw-2">&</span><span class="ident">listen_sock</span>, <span class="kw-2">&</span><span class="ident">SocketAddrV4::new</span>(<span class="ident">Ipv4Addr::LOCALHOST</span>, <span class="number">0</span>))<span class="question-mark">?</span>; | ||||
| <span class="ident">listen</span>(<span class="kw-2">&</span><span class="ident">listen_sock</span>, <span class="number">1</span>)<span class="question-mark">?</span>; | ||||
|  | ||||
| <span class="comment">// Create an epoll object. Using `Owning` here means the epoll object will</span> | ||||
| <span class="comment">// take ownership of the file descriptors registered with it.</span> | ||||
| <span class="kw">let</span> <span class="ident">epoll</span> <span class="op">=</span> <span class="ident">Epoll::new</span>(<span class="ident">epoll::CreateFlags::CLOEXEC</span>, <span class="ident">epoll::Owning::new</span>())<span class="question-mark">?</span>; | ||||
|  | ||||
| <span class="comment">// Remember the socket raw fd, which we use for comparisons only.</span> | ||||
| <span class="kw">let</span> <span class="ident">raw_listen_sock</span> <span class="op">=</span> <span class="ident">listen_sock</span>.<span class="ident">as_fd</span>().<span class="ident">as_raw_fd</span>(); | ||||
|  | ||||
| <span class="comment">// Register the socket with the epoll object.</span> | ||||
| <span class="ident">epoll</span>.<span class="ident">add</span>(<span class="ident">listen_sock</span>, <span class="ident">epoll::EventFlags::IN</span>)<span class="question-mark">?</span>; | ||||
|  | ||||
| <span class="comment">// Process events.</span> | ||||
| <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">event_list</span> <span class="op">=</span> <span class="ident">epoll::EventVec::with_capacity</span>(<span class="number">4</span>); | ||||
| <span class="kw">loop</span> { | ||||
|     <span class="ident">epoll</span>.<span class="ident">wait</span>(<span class="kw-2">&mut</span> <span class="ident">event_list</span>, <span class="op">-</span><span class="number">1</span>)<span class="question-mark">?</span>; | ||||
|     <span class="kw">for</span> (<span class="ident">_event_flags</span>, <span class="ident">target</span>) <span class="kw">in</span> <span class="kw-2">&</span><span class="ident">event_list</span> { | ||||
|         <span class="kw">if</span> <span class="ident">target</span>.<span class="ident">as_raw_fd</span>() <span class="op">==</span> <span class="ident">raw_listen_sock</span> { | ||||
|             <span class="comment">// Accept a new connection, set it to non-blocking, and</span> | ||||
|             <span class="comment">// register to be notified when it's ready to write to.</span> | ||||
|             <span class="kw">let</span> <span class="ident">conn_sock</span> <span class="op">=</span> <span class="ident">accept</span>(<span class="kw-2">&</span><span class="kw-2">*</span><span class="ident">target</span>)<span class="question-mark">?</span>; | ||||
|             <span class="ident">ioctl_fionbio</span>(<span class="kw-2">&</span><span class="ident">conn_sock</span>, <span class="bool-val">true</span>)<span class="question-mark">?</span>; | ||||
|             <span class="ident">epoll</span>.<span class="ident">add</span>(<span class="ident">conn_sock</span>, <span class="ident">epoll::EventFlags::OUT</span> <span class="op">|</span> <span class="ident">epoll::EventFlags::ET</span>)<span class="question-mark">?</span>; | ||||
|         } <span class="kw">else</span> { | ||||
|             <span class="comment">// Write a message to the stream and then unregister it.</span> | ||||
|             <span class="ident">write</span>(<span class="kw-2">&</span><span class="kw-2">*</span><span class="ident">target</span>, <span class="string">b"hello\n"</span>)<span class="question-mark">?</span>; | ||||
|             <span class="kw">let</span> <span class="kw">_</span> <span class="op">=</span> <span class="ident">epoll</span>.<span class="ident">del</span>(<span class="ident">target</span>)<span class="question-mark">?</span>; | ||||
|         } | ||||
|     } | ||||
| }</code></pre></div> | ||||
| </div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.Borrowing.html" title="rustix::io::epoll::Borrowing struct">Borrowing</a></div><div class="item-right docblock-short"><p>A type implementing <a href="trait.Context.html" title="Context"><code>Context</code></a> where the <code>Data</code> type is <code>BorrowedFd<'a></code>.</p> | ||||
| </div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.CreateFlags.html" title="rustix::io::epoll::CreateFlags struct">CreateFlags</a></div><div class="item-right docblock-short"><p><code>EPOLL_*</code> for use with <a href="struct.Epoll.html#method.new" title="Epoll::new"><code>Epoll::new</code></a>.</p> | ||||
| </div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.Epoll.html" title="rustix::io::epoll::Epoll struct">Epoll</a></div><div class="item-right docblock-short"><p>An “epoll”, an interface to an OS object allowing one to repeatedly wait | ||||
| for events from a set of file descriptors efficiently.</p> | ||||
| </div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.EventFlags.html" title="rustix::io::epoll::EventFlags struct">EventFlags</a></div><div class="item-right docblock-short"><p><code>EPOLL*</code> for use with <a href="struct.Epoll.html#method.add" title="Epoll::add"><code>Epoll::add</code></a>.</p> | ||||
| </div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.EventVec.html" title="rustix::io::epoll::EventVec struct">EventVec</a></div><div class="item-right docblock-short"><p>A vector of <code>Event</code>s, plus context for interpreting them.</p> | ||||
| </div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.Iter.html" title="rustix::io::epoll::Iter struct">Iter</a></div><div class="item-right docblock-short"><p>An iterator over the <code>Event</code>s in an <code>EventVec</code>.</p> | ||||
| </div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.Owning.html" title="rustix::io::epoll::Owning struct">Owning</a></div><div class="item-right docblock-short"><p>A type implementing <a href="trait.Context.html" title="Context"><code>Context</code></a> where the <code>Data</code> type is <code>T</code>, a type | ||||
| implementing <code>From<OwnedFd></code> and <code>From<T> for OwnedFd</code>.</p> | ||||
| </div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.Ref.html" title="rustix::io::epoll::Ref struct">Ref</a></div><div class="item-right docblock-short"><p>A reference to a <code>T</code>.</p> | ||||
| </div></div></div><h2 id="traits" class="small-section-header"><a href="#traits">Traits</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.Context.html" title="rustix::io::epoll::Context trait">Context</a></div><div class="item-right docblock-short"><p>A trait for data stored within an <a href="struct.Epoll.html"><code>Epoll</code></a> instance.</p> | ||||
| </div></div></div></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="rustix" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.64.0 (a55dd71d5 2022-09-19)" ></div></body></html> | ||||
							
								
								
									
										1
									
								
								doc/rustix/io/epoll/sidebar-items.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								doc/rustix/io/epoll/sidebar-items.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | ||||
| window.SIDEBAR_ITEMS = {"struct":[["Borrowing","A type implementing [`Context`] where the `Data` type is `BorrowedFd<'a>`."],["CreateFlags","`EPOLL_*` for use with [`Epoll::new`]."],["Epoll","An “epoll”, an interface to an OS object allowing one to repeatedly wait for events from a set of file descriptors efficiently."],["EventFlags","`EPOLL*` for use with [`Epoll::add`]."],["EventVec","A vector of `Event`s, plus context for interpreting them."],["Iter","An iterator over the `Event`s in an `EventVec`."],["Owning","A type implementing [`Context`] where the `Data` type is `T`, a type implementing `From<OwnedFd>` and `From<T> for OwnedFd`."],["Ref","A reference to a `T`."]],"trait":[["Context","A trait for data stored within an `Epoll` instance."]]}; | ||||
							
								
								
									
										20
									
								
								doc/rustix/io/epoll/struct.Borrowing.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								doc/rustix/io/epoll/struct.Borrowing.html
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										116
									
								
								doc/rustix/io/epoll/struct.CreateFlags.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										116
									
								
								doc/rustix/io/epoll/struct.CreateFlags.html
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										62
									
								
								doc/rustix/io/epoll/struct.Epoll.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								doc/rustix/io/epoll/struct.Epoll.html
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										125
									
								
								doc/rustix/io/epoll/struct.EventFlags.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										125
									
								
								doc/rustix/io/epoll/struct.EventFlags.html
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										25
									
								
								doc/rustix/io/epoll/struct.EventVec.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								doc/rustix/io/epoll/struct.EventVec.html
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										129
									
								
								doc/rustix/io/epoll/struct.Iter.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										129
									
								
								doc/rustix/io/epoll/struct.Iter.html
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										24
									
								
								doc/rustix/io/epoll/struct.Owning.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								doc/rustix/io/epoll/struct.Owning.html
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										16
									
								
								doc/rustix/io/epoll/struct.Ref.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								doc/rustix/io/epoll/struct.Ref.html
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										20
									
								
								doc/rustix/io/epoll/trait.Context.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								doc/rustix/io/epoll/trait.Context.html
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,20 @@ | ||||
| <!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 trait for data stored within an `Epoll` instance."><meta name="keywords" content="rust, rustlang, rust-lang, Context"><title>Context in rustix::io::epoll - 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" type="text/css" href="../../../normalize.css"><link rel="stylesheet" type="text/css" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../../dark.css" disabled><link rel="stylesheet" type="text/css" 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 trait"><!--[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">☰</button><a class="sidebar-logo" href="../../../rustix/index.html"><div class="logo-container"><img class="rust-logo" src="../../../rust-logo.svg" alt="logo"></div></a><h2 class="location"></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../rustix/index.html"><div class="logo-container"><img class="rust-logo" src="../../../rust-logo.svg" alt="logo"></div></a><h2 class="location"><a href="#">Context</a></h2><div class="sidebar-elems"><section><div class="block"><h3 class="sidebar-title"><a href="#required-associated-types">Required Associated Types</a></h3><ul><li><a href="#associatedtype.Data">Data</a></li><li><a href="#associatedtype.Target">Target</a></li></ul></div><div class="block"><h3 class="sidebar-title"><a href="#required-methods">Required Methods</a></h3><ul><li><a href="#tymethod.acquire">acquire</a></li><li><a href="#tymethod.decode">decode</a></li><li><a href="#tymethod.encode">encode</a></li><li><a href="#tymethod.release">release</a></li></ul></div><div class="block"><h3 class="sidebar-title"><a href="#implementors">Implementors</a></h3></div></section><h2 class="location"><a href="index.html">In rustix::io::epoll</a></h2></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../rustix/index.html"><img class="rust-logo" src="../../../rust-logo.svg" alt="logo"></a><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"><button type="button">?</button></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></div><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn"><span class="in-band">Trait <a href="../../index.html">rustix</a>::<wbr><a href="../index.html">io</a>::<wbr><a href="index.html">epoll</a>::<wbr><a class="trait" href="#">Context</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></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/rustix/io/context.rs.html#50-74">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="docblock item-decl"><pre class="rust trait"><code>pub trait Context { | ||||
|     type <a href="#associatedtype.Data" class="associatedtype">Data</a>; | ||||
|     type <a href="#associatedtype.Target" class="associatedtype">Target</a>: <a class="trait" href="../../fd/trait.AsFd.html" title="trait rustix::fd::AsFd">AsFd</a>; | ||||
|  | ||||
|     fn <a href="#tymethod.acquire" class="fnname">acquire</a><'call>(&self, data: Self::<a class="associatedtype" href="trait.Context.html#associatedtype.Data" title="type rustix::io::epoll::Context::Data">Data</a>) -> <a class="struct" href="struct.Ref.html" title="struct rustix::io::epoll::Ref">Ref</a><'call, Self::<a class="associatedtype" href="trait.Context.html#associatedtype.Target" title="type rustix::io::epoll::Context::Target">Target</a>>; | ||||
| <span class="item-spacer"></span>    fn <a href="#tymethod.encode" class="fnname">encode</a>(&self, target: <a class="struct" href="struct.Ref.html" title="struct rustix::io::epoll::Ref">Ref</a><'_, Self::<a class="associatedtype" href="trait.Context.html#associatedtype.Target" title="type rustix::io::epoll::Context::Target">Target</a>>) -> <a class="primitive" href="https://doc.rust-lang.org/1.64.0/std/primitive.u64.html">u64</a>; | ||||
| <span class="item-spacer"></span>    unsafe fn <a href="#tymethod.decode" class="fnname">decode</a><'call>(&self, raw: <a class="primitive" href="https://doc.rust-lang.org/1.64.0/std/primitive.u64.html">u64</a>) -> <a class="struct" href="struct.Ref.html" title="struct rustix::io::epoll::Ref">Ref</a><'call, Self::<a class="associatedtype" href="trait.Context.html#associatedtype.Target" title="type rustix::io::epoll::Context::Target">Target</a>>; | ||||
| <span class="item-spacer"></span>    fn <a href="#tymethod.release" class="fnname">release</a>(&self, target: <a class="struct" href="struct.Ref.html" title="struct rustix::io::epoll::Ref">Ref</a><'_, Self::<a class="associatedtype" href="trait.Context.html#associatedtype.Target" title="type rustix::io::epoll::Context::Target">Target</a>>) -> Self::<a class="associatedtype" href="trait.Context.html#associatedtype.Data" title="type rustix::io::epoll::Context::Data">Data</a>; | ||||
| }</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A trait for data stored within an <a href="struct.Epoll.html"><code>Epoll</code></a> instance.</p> | ||||
| </div></details><h2 id="required-associated-types" class="small-section-header">Required Associated Types<a href="#required-associated-types" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="associatedtype.Data" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/rustix/io/context.rs.html#52">source</a></div><h4 class="code-header">type <a href="#associatedtype.Data" class="associatedtype">Data</a></h4></div></summary><div class="docblock"><p>The type of an element owned by this context.</p> | ||||
| </div></details><details class="rustdoc-toggle" open><summary><div id="associatedtype.Target" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/rustix/io/context.rs.html#55">source</a></div><h4 class="code-header">type <a href="#associatedtype.Target" class="associatedtype">Target</a>: <a class="trait" href="../../fd/trait.AsFd.html" title="trait rustix::fd::AsFd">AsFd</a></h4></div></summary><div class="docblock"><p>The type of a value used to refer to an element owned by this context.</p> | ||||
| </div></details></div><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="tymethod.acquire" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/rustix/io/context.rs.html#58">source</a></div><h4 class="code-header">fn <a href="#tymethod.acquire" class="fnname">acquire</a><'call>(&self, data: Self::<a class="associatedtype" href="trait.Context.html#associatedtype.Data" title="type rustix::io::epoll::Context::Data">Data</a>) -> <a class="struct" href="struct.Ref.html" title="struct rustix::io::epoll::Ref">Ref</a><'call, Self::<a class="associatedtype" href="trait.Context.html#associatedtype.Target" title="type rustix::io::epoll::Context::Target">Target</a>></h4></div></summary><div class="docblock"><p>Assume ownership of <code>data</code>, and returning a <code>Target</code>.</p> | ||||
| </div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.encode" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/rustix/io/context.rs.html#62">source</a></div><h4 class="code-header">fn <a href="#tymethod.encode" class="fnname">encode</a>(&self, target: <a class="struct" href="struct.Ref.html" title="struct rustix::io::epoll::Ref">Ref</a><'_, Self::<a class="associatedtype" href="trait.Context.html#associatedtype.Target" title="type rustix::io::epoll::Context::Target">Target</a>>) -> <a class="primitive" href="https://doc.rust-lang.org/1.64.0/std/primitive.u64.html">u64</a></h4></div></summary><div class="docblock"><p>Encode <code>target</code> as a <code>u64</code>. The only requirement on this value is that | ||||
| it be decodable by <code>decode</code>.</p> | ||||
| </div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.decode" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/rustix/io/context.rs.html#70">source</a></div><h4 class="code-header">unsafe fn <a href="#tymethod.decode" class="fnname">decode</a><'call>(&self, raw: <a class="primitive" href="https://doc.rust-lang.org/1.64.0/std/primitive.u64.html">u64</a>) -> <a class="struct" href="struct.Ref.html" title="struct rustix::io::epoll::Ref">Ref</a><'call, Self::<a class="associatedtype" href="trait.Context.html#associatedtype.Target" title="type rustix::io::epoll::Context::Target">Target</a>></h4></div></summary><div class="docblock"><p>Decode <code>raw</code>, which is a value encoded by <code>encode</code>, into a <code>Target</code>.</p> | ||||
| <h5 id="safety"><a href="#safety">Safety</a></h5> | ||||
| <p><code>raw</code> must be a <code>u64</code> value returned from <code>encode</code>, from the same | ||||
| context, and within the context’s lifetime.</p> | ||||
| </div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.release" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../../src/rustix/io/context.rs.html#73">source</a></div><h4 class="code-header">fn <a href="#tymethod.release" class="fnname">release</a>(&self, target: <a class="struct" href="struct.Ref.html" title="struct rustix::io::epoll::Ref">Ref</a><'_, Self::<a class="associatedtype" href="trait.Context.html#associatedtype.Target" title="type rustix::io::epoll::Context::Target">Target</a>>) -> Self::<a class="associatedtype" href="trait.Context.html#associatedtype.Data" title="type rustix::io::epoll::Context::Data">Data</a></h4></div></summary><div class="docblock"><p>Release ownership of the value referred to by <code>target</code> and return it.</p> | ||||
| </div></details></div><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor"></a></h2><div class="item-list" id="implementors-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Context-for-Borrowing%3C%27a%3E" class="impl has-srclink"><span class="rightside"><a class="srclink" href="../../../src/rustix/io/context.rs.html#81-104">source</a></span><a href="#impl-Context-for-Borrowing%3C%27a%3E" class="anchor"></a><h3 class="code-header in-band">impl<'a> <a class="trait" href="trait.Context.html" title="trait rustix::io::epoll::Context">Context</a> for <a class="struct" href="struct.Borrowing.html" title="struct rustix::io::epoll::Borrowing">Borrowing</a><'a></h3></section></summary><div class="impl-items"><section id="associatedtype.Data-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Data-1" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Data" class="associatedtype">Data</a> = <a class="struct" href="../../fd/struct.BorrowedFd.html" title="struct rustix::fd::BorrowedFd">BorrowedFd</a><'a></h4></section><section id="associatedtype.Target-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Target-1" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Target" class="associatedtype">Target</a> = <a class="struct" href="../../fd/struct.BorrowedFd.html" title="struct rustix::fd::BorrowedFd">BorrowedFd</a><'a></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Context-for-Owning%3C%27context%2C%20T%3E" class="impl has-srclink"><span class="rightside"><a class="srclink" href="../../../src/rustix/io/context.rs.html#129-163">source</a></span><a href="#impl-Context-for-Owning%3C%27context%2C%20T%3E" class="anchor"></a><h3 class="code-header in-band">impl<'context, T: <a class="trait" href="../../fd/trait.AsFd.html" title="trait rustix::fd::AsFd">AsFd</a> + <a class="trait" href="https://doc.rust-lang.org/1.64.0/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><<a class="struct" href="../../fd/struct.OwnedFd.html" title="struct rustix::fd::OwnedFd">OwnedFd</a>> + <a class="trait" href="https://doc.rust-lang.org/1.64.0/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="../../fd/struct.OwnedFd.html" title="struct rustix::fd::OwnedFd">OwnedFd</a>>> <a class="trait" href="trait.Context.html" title="trait rustix::io::epoll::Context">Context</a> for <a class="struct" href="struct.Owning.html" title="struct rustix::io::epoll::Owning">Owning</a><'context, T></h3></section></summary><div class="impl-items"><section id="associatedtype.Data-2" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Data-2" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Data" class="associatedtype">Data</a> = T</h4></section><section id="associatedtype.Target-2" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Target-2" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Target" class="associatedtype">Target</a> = <a class="struct" href="../../fd/struct.BorrowedFd.html" title="struct rustix::fd::BorrowedFd">BorrowedFd</a><'context></h4></section></div></details></div><script type="text/javascript" src="../../../implementors/rustix/io/context/trait.Context.js" data-ignore-extern-crates="" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="rustix" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.64.0 (a55dd71d5 2022-09-19)" ></div></body></html> | ||||
		Reference in New Issue
	
	Block a user