Files
GopherGate/target/doc/tracing_core/dispatcher/index.html
2026-02-26 12:00:21 -05:00

66 lines
10 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!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="Dispatches trace events to `Subscriber`s."><title>tracing_core::dispatcher - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.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"href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="tracing_core" data-themes="" data-resource-suffix="" data-rustdoc-version="1.93.1 (01f6ddf75 2026-02-11) (Arch Linux rust 1:1.93.1-1)" data-channel="1.93.1" data-search-js="search-9e2438ea.js" data-stringdex-js="stringdex-a3946164.js" data-settings-js="settings-c38705f0.js" ><script src="../../static.files/storage-e2aeef58.js"></script><script defer src="../sidebar-items.js"></script><script defer src="../../static.files/main-a410ff4d.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-263c88ec.css"></noscript><link rel="icon" href="https://raw.githubusercontent.com/tokio-rs/tracing/main/assets/favicon.ico"></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]--><rustdoc-topbar><h2><a href="#">Module dispatcher</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><a class="logo-container" href="../../tracing_core/index.html"><img src="https://raw.githubusercontent.com/tokio-rs/tracing/main/assets/logo-type.png" alt="logo"></a><h2><a href="../../tracing_core/index.html">tracing_<wbr>core</a><span class="version">0.1.36</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Module dispatcher</a></h2><h3><a href="#">Sections</a></h3><ul class="block top-toc"><li><a href="#using-the-trace-dispatcher" title="Using the Trace Dispatcher">Using the Trace Dispatcher</a><ul><li><a href="#setting-the-default-subscriber" title="Setting the Default Subscriber">Setting the Default Subscriber</a></li><li><a href="#accessing-the-default-subscriber" title="Accessing the Default Subscriber">Accessing the Default Subscriber</a></li></ul></li></ul><h3><a href="#structs">Module Items</a></h3><ul class="block"><li><a href="#structs" title="Structs">Structs</a></li><li><a href="#functions" title="Functions">Functions</a></li></ul></section><div id="rustdoc-modnav"><h2 class="in-crate"><a href="../index.html">In crate tracing_<wbr>core</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../index.html">tracing_core</a></div><h1>Module <span>dispatcher</span>&nbsp;<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/tracing_core/dispatcher.rs.html#1-1067">Source</a> </span></div><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Dispatches trace events to <a href="../trait.Subscriber.html" title="trait tracing_core::Subscriber"><code>Subscriber</code></a>s.</p>
<p>The <em>dispatcher</em> is the component of the tracing system which is responsible
for forwarding trace data from the instrumentation points that generate it
to the subscriber that collects it.</p>
<h2 id="using-the-trace-dispatcher"><a class="doc-anchor" href="#using-the-trace-dispatcher">§</a>Using the Trace Dispatcher</h2>
<p>Every thread in a program using <code>tracing</code> has a <em>default subscriber</em>. When
events occur, or spans are created, they are dispatched to the threads
current subscriber.</p>
<h3 id="setting-the-default-subscriber"><a class="doc-anchor" href="#setting-the-default-subscriber">§</a>Setting the Default Subscriber</h3>
<p>By default, the current subscriber is an empty implementation that does
nothing. To use a subscriber implementation, it must be set as the default.
There are two methods for doing so: <a href="fn.with_default.html" title="fn tracing_core::dispatcher::with_default"><code>with_default</code></a> and
<a href="fn.set_global_default.html" title="fn tracing_core::dispatcher::set_global_default"><code>set_global_default</code></a>. <code>with_default</code> sets the default subscriber for the
duration of a scope, while <code>set_global_default</code> sets a default subscriber
for the entire process.</p>
<p>To use either of these functions, we must first wrap our subscriber in a
<a href="../struct.Dispatch.html" title="struct tracing_core::Dispatch"><code>Dispatch</code></a>, a cloneable, type-erased reference to a subscriber. For
example:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>dispatcher::Dispatch;
<span class="kw">let </span>my_subscriber = FooSubscriber::new();
<span class="kw">let </span>my_dispatch = Dispatch::new(my_subscriber);</code></pre></div>
<p>Then, we can use <a href="fn.with_default.html" title="fn tracing_core::dispatcher::with_default"><code>with_default</code></a> to set our <code>Dispatch</code> as the default for
the duration of a block:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="comment">// no default subscriber
</span>dispatcher::with_default(<span class="kw-2">&amp;</span>my_dispatch, || {
<span class="comment">// my_subscriber is the default
</span>});
<span class="comment">// no default subscriber again</span></code></pre></div>
<p>Its important to note that <code>with_default</code> will not propagate the current
threads default subscriber to any threads spawned within the <code>with_default</code>
block. To propagate the default subscriber to new threads, either use
<code>with_default</code> from the new thread, or use <code>set_global_default</code>.</p>
<p>As an alternative to <code>with_default</code>, we can use <a href="fn.set_global_default.html" title="fn tracing_core::dispatcher::set_global_default"><code>set_global_default</code></a> to
set a <code>Dispatch</code> as the default for all threads, for the lifetime of the
program. For example:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="comment">// no default subscriber
</span>dispatcher::set_global_default(my_dispatch)
<span class="comment">// `set_global_default` will return an error if the global default
// subscriber has already been set.
</span>.expect(<span class="string">"global default was already set!"</span>);
<span class="comment">// `my_subscriber` is now the default</span></code></pre></div><pre class="ignore" style="white-space:normal;font:inherit;">
<strong>Note</strong>:the thread-local scoped dispatcher
(<a href="#fn.with_default"><code>with_default</code></a>) requires the
Rust standard library. <code>no_std</code> users should use
<a href="#fn.set_global_default"><code>set_global_default</code></a>
instead.
</pre>
<h3 id="accessing-the-default-subscriber"><a class="doc-anchor" href="#accessing-the-default-subscriber">§</a>Accessing the Default Subscriber</h3>
<p>A threads current default subscriber can be accessed using the
<a href="fn.get_default.html" title="fn tracing_core::dispatcher::get_default"><code>get_default</code></a> function, which executes a closure with a reference to the
currently default <code>Dispatch</code>. This is used primarily by <code>tracing</code>
instrumentation.</p>
</div></details><h2 id="structs" class="section-header">Structs<a href="#structs" class="anchor">§</a></h2><dl class="item-table"><dt><a class="struct" href="struct.DefaultGuard.html" title="struct tracing_core::dispatcher::DefaultGuard">Default<wbr>Guard</a></dt><dd>A guard that resets the current default dispatcher to the prior
default dispatcher when dropped.</dd><dt><a class="struct" href="struct.Dispatch.html" title="struct tracing_core::dispatcher::Dispatch">Dispatch</a></dt><dd><code>Dispatch</code> trace data to a <a href="../trait.Subscriber.html" title="trait tracing_core::Subscriber"><code>Subscriber</code></a>.</dd><dt><a class="struct" href="struct.SetGlobalDefaultError.html" title="struct tracing_core::dispatcher::SetGlobalDefaultError">SetGlobal<wbr>Default<wbr>Error</a></dt><dd>Returned if setting the global dispatcher fails.</dd><dt><a class="struct" href="struct.WeakDispatch.html" title="struct tracing_core::dispatcher::WeakDispatch">Weak<wbr>Dispatch</a></dt><dd><code>WeakDispatch</code> is a version of <a href="../struct.Dispatch.html" title="struct tracing_core::Dispatch"><code>Dispatch</code></a> that holds a non-owning reference
to a <a href="../trait.Subscriber.html" title="trait tracing_core::Subscriber"><code>Subscriber</code></a>.</dd></dl><h2 id="functions" class="section-header">Functions<a href="#functions" class="anchor">§</a></h2><dl class="item-table"><dt><a class="fn" href="fn.get_default.html" title="fn tracing_core::dispatcher::get_default">get_<wbr>default</a></dt><dd>Executes a closure with a reference to this threads current <a href="../struct.Dispatch.html" title="struct tracing_core::Dispatch">dispatcher</a>.</dd><dt><a class="fn" href="fn.set_default.html" title="fn tracing_core::dispatcher::set_default">set_<wbr>default</a></dt><dd>Sets the dispatch as the default dispatch for the duration of the lifetime
of the returned DefaultGuard</dd><dt><a class="fn" href="fn.set_global_default.html" title="fn tracing_core::dispatcher::set_global_default">set_<wbr>global_<wbr>default</a></dt><dd>Sets this dispatch as the global default for the duration of the entire program.
Will be used as a fallback if no thread-local dispatch has been set in a thread
(using <code>with_default</code>.)</dd><dt><a class="fn" href="fn.with_default.html" title="fn tracing_core::dispatcher::with_default">with_<wbr>default</a></dt><dd>Sets this dispatch as the default for the duration of a closure.</dd></dl></section></div></main></body></html>