difftastic/rustdoc/signal_hook/iterator/index.html

51 lines
9.2 KiB
HTML

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!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="An iterator over incoming signals."><title>signal_hook::iterator - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-ac92e1bbe349e143.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="signal_hook" data-themes="" data-resource-suffix="" data-rustdoc-version="1.76.0 (07dca489a 2024-02-04)" data-channel="1.76.0" data-search-js="search-2b6ce74ff89ae146.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-f2adc0d6ca4d09fb.js"></script><script defer src="../sidebar-items.js"></script><script defer src="../../static.files/main-305769736d49e732.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-feafe1bb7466e4bd.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.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">&#9776;</button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../signal_hook/index.html">signal_hook</a><span class="version">0.3.17</span></h2></div><h2 class="location"><a href="#">Module iterator</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#reexports">Re-exports</a></li><li><a href="#modules">Modules</a></li><li><a href="#structs">Structs</a></li><li><a href="#types">Type Aliases</a></li></ul></section><h2><a href="../index.html">In crate signal_hook</a></h2></div></nav><div class="sidebar-resizer"></div>
<main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../signal_hook/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Module <a href="../index.html">signal_hook</a>::<wbr><a class="mod" href="#">iterator</a><button id="copy-path" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="src" href="../../src/signal_hook/iterator/mod.rs.html#1-326">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>An iterator over incoming signals.</p>
<p>This provides a higher abstraction over the signals, providing
the <a href="struct.SignalsInfo.html" title="struct signal_hook::iterator::SignalsInfo"><code>SignalsInfo</code></a> structure which is able to iterate over the
incoming signals. The structure is parametrized by an
<a href="exfiltrator/trait.Exfiltrator.html" title="trait signal_hook::iterator::exfiltrator::Exfiltrator"><code>Exfiltrator</code></a>, which specifies what information is returned
for each delivered signal. Note that some exfiltrators are behind a feature flag.</p>
<p>The <a href="type.Signals.html" title="type signal_hook::iterator::Signals"><code>Signals</code></a> is a type alias for the common case when it is enough to get the signal number.</p>
<p>This module (and everything in it) is turned by the <code>iterator</code> feature. It is <strong>on</strong> by
default, the possibility to turn off is mostly possible for very special purposes (compiling on
<code>&lt;rustc-1.36</code>, minimizing the amount of code compiled, …). In a sense, this is the highest
level abstraction of the crate and the API expected to be used by most of the people.</p>
<h2 id="examples"><a href="#examples">Examples</a></h2>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">extern crate </span>libc;
<span class="kw">extern crate </span>signal_hook;
<span class="kw">use </span>std::io::Error;
<span class="kw">use </span>signal_hook::consts::signal::<span class="kw-2">*</span>;
<span class="kw">use </span>signal_hook::iterator::Signals;
<span class="kw">fn </span>main() -&gt; <span class="prelude-ty">Result</span>&lt;(), Error&gt; {
<span class="kw">let </span><span class="kw-2">mut </span>signals = Signals::new(<span class="kw-2">&amp;</span>[
SIGHUP,
SIGTERM,
SIGINT,
SIGQUIT,
])<span class="question-mark">?</span>;
<span class="lifetime">'outer</span>: <span class="kw">loop </span>{
<span class="comment">// Pick up signals that arrived since last time
</span><span class="kw">for </span>signal <span class="kw">in </span>signals.pending() {
<span class="kw">match </span>signal <span class="kw">as </span>libc::c_int {
SIGHUP =&gt; {
<span class="comment">// Reload configuration
// Reopen the log file
</span>}
SIGTERM | SIGINT | SIGQUIT =&gt; {
<span class="kw">break </span><span class="lifetime">'outer</span>;
},
<span class="kw">_ </span>=&gt; <span class="macro">unreachable!</span>(),
}
}
<span class="comment">// Do some bit of work something with upper limit on waiting, so we don't block
// forever with a SIGTERM already waiting.
</span>}
<span class="macro">println!</span>(<span class="string">"Terminating. Bye bye"</span>);
<span class="prelude-val">Ok</span>(())
}</code></pre></div>
</div></details><h2 id="reexports" class="section-header"><a href="#reexports">Re-exports</a></h2><ul class="item-table"><li><div class="item-name" id="reexport.Handle"><code>pub use self::backend::<a class="struct" href="backend/struct.Handle.html" title="struct signal_hook::iterator::backend::Handle">Handle</a>;</code></div></li><li><div class="item-name" id="reexport.Pending"><code>pub use self::backend::<a class="struct" href="backend/struct.Pending.html" title="struct signal_hook::iterator::backend::Pending">Pending</a>;</code></div></li></ul><h2 id="modules" class="section-header"><a href="#modules">Modules</a></h2><ul class="item-table"><li><div class="item-name"><a class="mod" href="backend/index.html" title="mod signal_hook::iterator::backend">backend</a></div><div class="desc docblock-short">A backend module for implementing the iterator like
<a href="index.html" title="mod signal_hook::iterator"><code>iterator</code></a> module and the asynchronous
adapter crates.</div></li><li><div class="item-name"><a class="mod" href="exfiltrator/index.html" title="mod signal_hook::iterator::exfiltrator">exfiltrator</a></div><div class="desc docblock-short">An abstraction over exfiltrating information out of signal handlers.</div></li></ul><h2 id="structs" class="section-header"><a href="#structs">Structs</a></h2><ul class="item-table"><li><div class="item-name"><a class="struct" href="struct.Forever.html" title="struct signal_hook::iterator::Forever">Forever</a></div><div class="desc docblock-short">An infinite iterator of arriving signals.</div></li><li><div class="item-name"><a class="struct" href="struct.SignalsInfo.html" title="struct signal_hook::iterator::SignalsInfo">SignalsInfo</a></div><div class="desc docblock-short">The main structure of the module, representing interest in some signals.</div></li></ul><h2 id="types" class="section-header"><a href="#types">Type Aliases</a></h2><ul class="item-table"><li><div class="item-name"><a class="type" href="type.Signals.html" title="type signal_hook::iterator::Signals">Signals</a></div><div class="desc docblock-short">A type alias for an iterator returning just the signal numbers.</div></li></ul></section></div></main></body></html>