mirror of
https://github.com/edg-l/edlang.git
synced 2024-11-22 16:08:24 +00:00
352 lines
72 KiB
HTML
352 lines
72 KiB
HTML
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait representing the functions required to collect trace data."><title>Subscriber in tracing_core - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-dd39b87e5fcfba68.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.80.0 (051478957 2024-07-21)" data-channel="1.80.0" data-search-js="search-d52510db62a78183.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-118b08c4c78b968e.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-20a3ad099b048cf2.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-df360f571f6edeae.css"></noscript><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 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" title="show sidebar"></button><a class="logo-container" href="../tracing_core/index.html"><img src="https://raw.githubusercontent.com/tokio-rs/tracing/master/assets/logo-type.png" alt=""></a></nav><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/master/assets/logo-type.png" alt="logo"></a><h2><a href="../tracing_core/index.html">tracing_core</a><span class="version">0.1.32</span></h2></div><h2 class="location"><a href="#">Subscriber</a></h2><div class="sidebar-elems"><section><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.enabled">enabled</a></li><li><a href="#tymethod.enter">enter</a></li><li><a href="#tymethod.event">event</a></li><li><a href="#tymethod.exit">exit</a></li><li><a href="#tymethod.new_span">new_span</a></li><li><a href="#tymethod.record">record</a></li><li><a href="#tymethod.record_follows_from">record_follows_from</a></li></ul><h3><a href="#provided-methods">Provided Methods</a></h3><ul class="block"><li><a href="#method.clone_span">clone_span</a></li><li><a href="#method.current_span">current_span</a></li><li><a href="#method.downcast_raw">downcast_raw</a></li><li><a href="#method.drop_span">drop_span</a></li><li><a href="#method.event_enabled">event_enabled</a></li><li><a href="#method.max_level_hint">max_level_hint</a></li><li><a href="#method.on_register_dispatch">on_register_dispatch</a></li><li><a href="#method.register_callsite">register_callsite</a></li><li><a href="#method.try_close">try_close</a></li></ul><h3><a href="#foreign-impls">Implementations on Foreign Types</a></h3><ul class="block"><li><a href="#impl-Subscriber-for-Arc%3CS%3E">Arc<S></a></li><li><a href="#impl-Subscriber-for-Box%3CS%3E">Box<S></a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.downcast_ref">downcast_ref</a></li><li><a href="#method.downcast_ref-1">downcast_ref</a></li><li><a href="#method.downcast_ref-2">downcast_ref</a></li><li><a href="#method.downcast_ref-3">downcast_ref</a></li><li><a href="#method.is">is</a></li><li><a href="#method.is-1">is</a></li><li><a href="#method.is-2">is</a></li><li><a href="#method.is-3">is</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In crate tracing_core</a></h2></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><rustdoc-search></rustdoc-search><section id="main-content" class="content"><div class="main-heading"><h1>Trait <a href="index.html">tracing_core</a>::<wbr><a class="trait" href="#">Subscriber</a><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><span class="out-of-band"><a class="src" href="../src/tracing_core/subscriber.rs.html#83-502">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><pre class="rust item-decl"><code>pub trait Subscriber: 'static {
|
||
<details class="toggle type-contents-toggle"><summary class="hideme"><span>Show 16 methods</span></summary> // Required methods
|
||
fn <a href="#tymethod.enabled" class="fn">enabled</a>(&self, metadata: &<a class="struct" href="struct.Metadata.html" title="struct tracing_core::Metadata">Metadata</a><'_>) -> <a class="primitive" href="https://doc.rust-lang.org/1.80.0/std/primitive.bool.html">bool</a>;
|
||
<span class="item-spacer"></span> fn <a href="#tymethod.new_span" class="fn">new_span</a>(&self, span: &<a class="struct" href="span/struct.Attributes.html" title="struct tracing_core::span::Attributes">Attributes</a><'_>) -> <a class="struct" href="span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>;
|
||
<span class="item-spacer"></span> fn <a href="#tymethod.record" class="fn">record</a>(&self, span: &<a class="struct" href="span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>, values: &<a class="struct" href="span/struct.Record.html" title="struct tracing_core::span::Record">Record</a><'_>);
|
||
<span class="item-spacer"></span> fn <a href="#tymethod.record_follows_from" class="fn">record_follows_from</a>(&self, span: &<a class="struct" href="span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>, follows: &<a class="struct" href="span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>);
|
||
<span class="item-spacer"></span> fn <a href="#tymethod.event" class="fn">event</a>(&self, event: &<a class="struct" href="struct.Event.html" title="struct tracing_core::Event">Event</a><'_>);
|
||
<span class="item-spacer"></span> fn <a href="#tymethod.enter" class="fn">enter</a>(&self, span: &<a class="struct" href="span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>);
|
||
<span class="item-spacer"></span> fn <a href="#tymethod.exit" class="fn">exit</a>(&self, span: &<a class="struct" href="span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>);
|
||
|
||
// Provided methods
|
||
fn <a href="#method.on_register_dispatch" class="fn">on_register_dispatch</a>(&self, subscriber: &<a class="struct" href="struct.Dispatch.html" title="struct tracing_core::Dispatch">Dispatch</a>) { ... }
|
||
<span class="item-spacer"></span> fn <a href="#method.register_callsite" class="fn">register_callsite</a>(
|
||
&self,
|
||
metadata: &'static <a class="struct" href="struct.Metadata.html" title="struct tracing_core::Metadata">Metadata</a><'static>,
|
||
) -> <a class="struct" href="subscriber/struct.Interest.html" title="struct tracing_core::subscriber::Interest">Interest</a> { ... }
|
||
<span class="item-spacer"></span> fn <a href="#method.max_level_hint" class="fn">max_level_hint</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/1.80.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="struct.LevelFilter.html" title="struct tracing_core::LevelFilter">LevelFilter</a>> { ... }
|
||
<span class="item-spacer"></span> fn <a href="#method.event_enabled" class="fn">event_enabled</a>(&self, event: &<a class="struct" href="struct.Event.html" title="struct tracing_core::Event">Event</a><'_>) -> <a class="primitive" href="https://doc.rust-lang.org/1.80.0/std/primitive.bool.html">bool</a> { ... }
|
||
<span class="item-spacer"></span> fn <a href="#method.clone_span" class="fn">clone_span</a>(&self, id: &<a class="struct" href="span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>) -> <a class="struct" href="span/struct.Id.html" title="struct tracing_core::span::Id">Id</a> { ... }
|
||
<span class="item-spacer"></span> fn <a href="#method.drop_span" class="fn">drop_span</a>(&self, _id: <a class="struct" href="span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>) { ... }
|
||
<span class="item-spacer"></span> fn <a href="#method.try_close" class="fn">try_close</a>(&self, id: <a class="struct" href="span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>) -> <a class="primitive" href="https://doc.rust-lang.org/1.80.0/std/primitive.bool.html">bool</a> { ... }
|
||
<span class="item-spacer"></span> fn <a href="#method.current_span" class="fn">current_span</a>(&self) -> <a class="struct" href="span/struct.Current.html" title="struct tracing_core::span::Current">Current</a> { ... }
|
||
<span class="item-spacer"></span> unsafe fn <a href="#method.downcast_raw" class="fn">downcast_raw</a>(&self, id: <a class="struct" href="https://doc.rust-lang.org/1.80.0/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a>) -> <a class="enum" href="https://doc.rust-lang.org/1.80.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/1.80.0/std/primitive.pointer.html">*const </a><a class="primitive" href="https://doc.rust-lang.org/1.80.0/std/primitive.unit.html">()</a>> { ... }
|
||
</details>}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Trait representing the functions required to collect trace data.</p>
|
||
<p>Crates that provide implementations of methods for collecting or recording
|
||
trace data should implement the <code>Subscriber</code> interface. This trait is
|
||
intended to represent fundamental primitives for collecting trace events and
|
||
spans — other libraries may offer utility functions and types to make
|
||
subscriber implementations more modular or improve the ergonomics of writing
|
||
subscribers.</p>
|
||
<p>A subscriber is responsible for the following:</p>
|
||
<ul>
|
||
<li>Registering new spans as they are created, and providing them with span
|
||
IDs. Implicitly, this means the subscriber may determine the strategy for
|
||
determining span equality.</li>
|
||
<li>Recording the attachment of field values and follows-from annotations to
|
||
spans.</li>
|
||
<li>Filtering spans and events, and determining when those filters must be
|
||
invalidated.</li>
|
||
<li>Observing spans as they are entered, exited, and closed, and events as
|
||
they occur.</li>
|
||
</ul>
|
||
<p>When a span is entered or exited, the subscriber is provided only with the
|
||
<a href="span/struct.Id.html" title="struct tracing_core::span::Id">ID</a> with which it tagged that span when it was created. This means
|
||
that it is up to the subscriber to determine whether and how span <em>data</em> —
|
||
the fields and metadata describing the span — should be stored. The
|
||
<a href="trait.Subscriber.html#tymethod.new_span" title="method tracing_core::Subscriber::new_span"><code>new_span</code></a> function is called when a new span is created, and at that
|
||
point, the subscriber <em>may</em> choose to store the associated data if it will
|
||
be referenced again. However, if the data has already been recorded and will
|
||
not be needed by the implementations of <code>enter</code> and <code>exit</code>, the subscriber
|
||
may freely discard that data without allocating space to store it.</p>
|
||
<h3 id="overriding-default-impls"><a class="doc-anchor" href="#overriding-default-impls">§</a>Overriding default impls</h3>
|
||
<p>Some trait methods on <code>Subscriber</code> have default implementations, either in
|
||
order to reduce the surface area of implementing <code>Subscriber</code>, or for
|
||
backward-compatibility reasons. However, many subscribers will likely want
|
||
to override these default implementations.</p>
|
||
<p>The following methods are likely of interest:</p>
|
||
<ul>
|
||
<li>
|
||
<p><a href="trait.Subscriber.html#method.register_callsite" title="method tracing_core::Subscriber::register_callsite"><code>register_callsite</code></a> is called once for each callsite from which a span
|
||
event may originate, and returns an <a href="subscriber/struct.Interest.html" title="struct tracing_core::subscriber::Interest"><code>Interest</code></a> value describing whether or
|
||
not the subscriber wishes to see events or spans from that callsite. By
|
||
default, it calls <a href="trait.Subscriber.html#tymethod.enabled" title="method tracing_core::Subscriber::enabled"><code>enabled</code></a>, and returns <code>Interest::always()</code> if
|
||
<code>enabled</code> returns true, or <code>Interest::never()</code> if enabled returns false.
|
||
However, if the subscriber’s interest can change dynamically at runtime,
|
||
it may want to override this function to return <code>Interest::sometimes()</code>.
|
||
Additionally, subscribers which wish to perform a behaviour once for each
|
||
callsite, such as allocating storage for data related to that callsite,
|
||
can perform it in <code>register_callsite</code>.</p>
|
||
<p>See also the <a href="callsite/index.html#registering-callsites" title="mod tracing_core::callsite">documentation on the callsite registry</a> for details
|
||
on <a href="trait.Subscriber.html#method.register_callsite" title="method tracing_core::Subscriber::register_callsite"><code>register_callsite</code></a>.</p>
|
||
</li>
|
||
<li>
|
||
<p><a href="trait.Subscriber.html#method.event_enabled" title="method tracing_core::Subscriber::event_enabled"><code>event_enabled</code></a> is called once before every call to the <a href="trait.Subscriber.html#tymethod.event" title="method tracing_core::Subscriber::event"><code>event</code></a>
|
||
method. This can be used to implement filtering on events once their field
|
||
values are known, but before any processing is done in the <code>event</code> method.</p>
|
||
</li>
|
||
<li>
|
||
<p><a href="trait.Subscriber.html#method.clone_span" title="method tracing_core::Subscriber::clone_span"><code>clone_span</code></a> is called every time a span ID is cloned, and <a href="trait.Subscriber.html#method.try_close" title="method tracing_core::Subscriber::try_close"><code>try_close</code></a>
|
||
is called when a span ID is dropped. By default, these functions do
|
||
nothing. However, they can be used to implement reference counting for
|
||
spans, allowing subscribers to free storage for span data and to determine
|
||
when a span has <em>closed</em> permanently (rather than being exited).
|
||
Subscribers which store per-span data or which need to track span closures
|
||
should override these functions together.</p>
|
||
</li>
|
||
</ul>
|
||
</div></details><h2 id="required-methods" class="section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="tymethod.enabled" class="method"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#206">source</a><h4 class="code-header">fn <a href="#tymethod.enabled" class="fn">enabled</a>(&self, metadata: &<a class="struct" href="struct.Metadata.html" title="struct tracing_core::Metadata">Metadata</a><'_>) -> <a class="primitive" href="https://doc.rust-lang.org/1.80.0/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns true if a span or event with the specified <a href="struct.Metadata.html" title="struct tracing_core::Metadata">metadata</a> would be
|
||
recorded.</p>
|
||
<p>By default, it is assumed that this filter needs only be evaluated once
|
||
for each callsite, so it is called by <a href="trait.Subscriber.html#method.register_callsite" title="method tracing_core::Subscriber::register_callsite"><code>register_callsite</code></a> when each
|
||
callsite is registered. The result is used to determine if the subscriber
|
||
is always <a href="subscriber/struct.Interest.html" title="struct tracing_core::subscriber::Interest">interested</a> or never interested in that callsite. This is intended
|
||
primarily as an optimization, so that expensive filters (such as those
|
||
involving string search, et cetera) need not be re-evaluated.</p>
|
||
<p>However, if the subscriber’s interest in a particular span or event may
|
||
change, or depends on contexts only determined dynamically at runtime,
|
||
then the <code>register_callsite</code> method should be overridden to return
|
||
<a href="subscriber/struct.Interest.html#method.sometimes" title="associated function tracing_core::subscriber::Interest::sometimes"><code>Interest::sometimes</code></a>. In that case, this function will be called every
|
||
time that span or event occurs.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.new_span" class="method"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#258">source</a><h4 class="code-header">fn <a href="#tymethod.new_span" class="fn">new_span</a>(&self, span: &<a class="struct" href="span/struct.Attributes.html" title="struct tracing_core::span::Attributes">Attributes</a><'_>) -> <a class="struct" href="span/struct.Id.html" title="struct tracing_core::span::Id">Id</a></h4></section></summary><div class="docblock"><p>Visit the construction of a new span, returning a new <a href="span/struct.Id.html" title="struct tracing_core::span::Id">span ID</a> for the
|
||
span being constructed.</p>
|
||
<p>The provided <a href="span/struct.Attributes.html" title="struct tracing_core::span::Attributes"><code>Attributes</code></a> contains any field values that were provided
|
||
when the span was created. The subscriber may pass a <a href="field/trait.Visit.html" title="trait tracing_core::field::Visit">visitor</a> to the
|
||
<code>Attributes</code>’ <a href="span/struct.Attributes.html#method.record" title="method tracing_core::span::Attributes::record"><code>record</code> method</a> to record these values.</p>
|
||
<p>IDs are used to uniquely identify spans and events within the context of a
|
||
subscriber, so span equality will be based on the returned ID. Thus, if
|
||
the subscriber wishes for all spans with the same metadata to be
|
||
considered equal, it should return the same ID every time it is given a
|
||
particular set of metadata. Similarly, if it wishes for two separate
|
||
instances of a span with the same metadata to <em>not</em> be equal, it should
|
||
return a distinct ID every time this function is called, regardless of
|
||
the metadata.</p>
|
||
<p>Note that the subscriber is free to assign span IDs based on whatever
|
||
scheme it sees fit. Any guarantees about uniqueness, ordering, or ID
|
||
reuse are left up to the subscriber implementation to determine.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.record" class="method"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#298">source</a><h4 class="code-header">fn <a href="#tymethod.record" class="fn">record</a>(&self, span: &<a class="struct" href="span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>, values: &<a class="struct" href="span/struct.Record.html" title="struct tracing_core::span::Record">Record</a><'_>)</h4></section></summary><div class="docblock"><p>Record a set of values on a span.</p>
|
||
<p>This method will be invoked when value is recorded on a span.
|
||
Recording multiple values for the same field is possible,
|
||
but the actual behaviour is defined by the subscriber implementation.</p>
|
||
<p>Keep in mind that a span might not provide a value
|
||
for each field it declares.</p>
|
||
<p>The subscriber is expected to provide a <a href="field/trait.Visit.html" title="trait tracing_core::field::Visit">visitor</a> to the <code>Record</code>’s
|
||
<a href="span/struct.Record.html#method.record" title="method tracing_core::span::Record::record"><code>record</code> method</a> in order to record the added values.</p>
|
||
<h5 id="example"><a class="doc-anchor" href="#example">§</a>Example</h5>
|
||
<p>“foo = 3” will be recorded when <a href="span/struct.Attributes.html#method.record" title="method tracing_core::span::Attributes::record"><code>record</code></a> is called on the
|
||
<code>Attributes</code> passed to <code>new_span</code>.
|
||
Since values are not provided for the <code>bar</code> and <code>baz</code> fields,
|
||
the span’s <code>Metadata</code> will indicate that it <em>has</em> those fields,
|
||
but values for them won’t be recorded at this time.</p>
|
||
|
||
<div class="example-wrap ignore"><a href="#" class="tooltip" title="This example is not tested">ⓘ</a><pre class="rust rust-example-rendered"><code>
|
||
<span class="kw">let </span><span class="kw-2">mut </span>span = <span class="macro">span!</span>(<span class="string">"my_span"</span>, foo = <span class="number">3</span>, bar, baz);
|
||
|
||
<span class="comment">// `Subscriber::record` will be called with a `Record`
|
||
// containing "bar = false"
|
||
</span>span.record(<span class="string">"bar"</span>, <span class="kw-2">&</span><span class="bool-val">false</span>);
|
||
|
||
<span class="comment">// `Subscriber::record` will be called with a `Record`
|
||
// containing "baz = "a string""
|
||
</span>span.record(<span class="string">"baz"</span>, <span class="kw-2">&</span><span class="string">"a string"</span>);</code></pre></div>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.record_follows_from" class="method"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#318">source</a><h4 class="code-header">fn <a href="#tymethod.record_follows_from" class="fn">record_follows_from</a>(&self, span: &<a class="struct" href="span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>, follows: &<a class="struct" href="span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>)</h4></section></summary><div class="docblock"><p>Adds an indication that <code>span</code> follows from the span with the id
|
||
<code>follows</code>.</p>
|
||
<p>This relationship differs somewhat from the parent-child relationship: a
|
||
span may have any number of prior spans, rather than a single one; and
|
||
spans are not considered to be executing <em>inside</em> of the spans they
|
||
follow from. This means that a span may close even if subsequent spans
|
||
that follow from it are still open, and time spent inside of a
|
||
subsequent span should not be included in the time its precedents were
|
||
executing. This is used to model causal relationships such as when a
|
||
single future spawns several related background tasks, et cetera.</p>
|
||
<p>If the subscriber has spans corresponding to the given IDs, it should
|
||
record this relationship in whatever way it deems necessary. Otherwise,
|
||
if one or both of the given span IDs do not correspond to spans that the
|
||
subscriber knows about, or if a cyclical relationship would be created
|
||
(i.e., some span <em>a</em> which proceeds some other span <em>b</em> may not also
|
||
follow from <em>b</em>), it may silently do nothing.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.event" class="method"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#349">source</a><h4 class="code-header">fn <a href="#tymethod.event" class="fn">event</a>(&self, event: &<a class="struct" href="struct.Event.html" title="struct tracing_core::Event">Event</a><'_>)</h4></section></summary><div class="docblock"><p>Records that an <a href="struct.Event.html" title="struct tracing_core::Event"><code>Event</code></a> has occurred.</p>
|
||
<p>This method will be invoked when an Event is constructed by
|
||
the <code>Event</code>’s <a href="struct.Event.html#method.dispatch" title="associated function tracing_core::Event::dispatch"><code>dispatch</code> method</a>. For example, this happens internally
|
||
when an event macro from <code>tracing</code> is called.</p>
|
||
<p>The key difference between this method and <code>record</code> is that <code>record</code> is
|
||
called when a value is recorded for a field defined by a span,
|
||
while <code>event</code> is called when a new event occurs.</p>
|
||
<p>The provided <code>Event</code> struct contains any field values attached to the
|
||
event. The subscriber may pass a <a href="field/trait.Visit.html" title="trait tracing_core::field::Visit">visitor</a> to the <code>Event</code>’s
|
||
<a href="struct.Event.html#method.record" title="method tracing_core::Event::record"><code>record</code> method</a> to record these values.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.enter" class="method"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#359">source</a><h4 class="code-header">fn <a href="#tymethod.enter" class="fn">enter</a>(&self, span: &<a class="struct" href="span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>)</h4></section></summary><div class="docblock"><p>Records that a span has been entered.</p>
|
||
<p>When entering a span, this method is called to notify the subscriber
|
||
that the span has been entered. The subscriber is provided with the
|
||
<a href="span/struct.Id.html" title="struct tracing_core::span::Id">span ID</a> of the entered span, and should update any internal state
|
||
tracking the current span accordingly.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.exit" class="method"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#371">source</a><h4 class="code-header">fn <a href="#tymethod.exit" class="fn">exit</a>(&self, span: &<a class="struct" href="span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>)</h4></section></summary><div class="docblock"><p>Records that a span has been exited.</p>
|
||
<p>When exiting a span, this method is called to notify the subscriber
|
||
that the span has been exited. The subscriber is provided with the
|
||
<a href="span/struct.Id.html" title="struct tracing_core::span::Id">span ID</a> of the exited span, and should update any internal state
|
||
tracking the current span accordingly.</p>
|
||
<p>Exiting a span does not imply that the span will not be re-entered.</p>
|
||
</div></details></div><h2 id="provided-methods" class="section-header">Provided Methods<a href="#provided-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="method.on_register_dispatch" class="method"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#103-105">source</a><h4 class="code-header">fn <a href="#method.on_register_dispatch" class="fn">on_register_dispatch</a>(&self, subscriber: &<a class="struct" href="struct.Dispatch.html" title="struct tracing_core::Dispatch">Dispatch</a>)</h4></section></summary><div class="docblock"><p>Invoked when this subscriber becomes a <a href="struct.Dispatch.html" title="struct tracing_core::Dispatch"><code>Dispatch</code></a>.</p>
|
||
<h6 id="avoiding-memory-leaks"><a class="doc-anchor" href="#avoiding-memory-leaks">§</a>Avoiding Memory Leaks</h6>
|
||
<p><code>Subscriber</code>s should not store their own <a href="struct.Dispatch.html" title="struct tracing_core::Dispatch"><code>Dispatch</code></a>. Because the
|
||
<code>Dispatch</code> owns the <code>Subscriber</code>, storing the <code>Dispatch</code> within the
|
||
<code>Subscriber</code> will create a reference count cycle, preventing the <code>Dispatch</code>
|
||
from ever being dropped.</p>
|
||
<p>Instead, when it is necessary to store a cyclical reference to the
|
||
<code>Dispatch</code> within a <code>Subscriber</code>, use <a href="struct.Dispatch.html#method.downgrade" title="method tracing_core::Dispatch::downgrade"><code>Dispatch::downgrade</code></a> to convert a
|
||
<code>Dispatch</code> into a <a href="dispatcher/struct.WeakDispatch.html" title="struct tracing_core::dispatcher::WeakDispatch"><code>WeakDispatch</code></a>. This type is analogous to
|
||
<a href="https://doc.rust-lang.org/1.80.0/alloc/sync/struct.Weak.html" title="struct alloc::sync::Weak"><code>std::sync::Weak</code></a>, and does not create a reference count cycle. A
|
||
<a href="dispatcher/struct.WeakDispatch.html" title="struct tracing_core::dispatcher::WeakDispatch"><code>WeakDispatch</code></a> can be stored within a <code>Subscriber</code> without causing a
|
||
memory leak, and can be <a href="dispatcher/struct.WeakDispatch.html#method.upgrade" title="method tracing_core::dispatcher::WeakDispatch::upgrade">upgraded</a> into a <code>Dispatch</code> temporarily when
|
||
the <code>Dispatch</code> must be accessed by the <code>Subscriber</code>.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.register_callsite" class="method"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#178-184">source</a><h4 class="code-header">fn <a href="#method.register_callsite" class="fn">register_callsite</a>(&self, metadata: &'static <a class="struct" href="struct.Metadata.html" title="struct tracing_core::Metadata">Metadata</a><'static>) -> <a class="struct" href="subscriber/struct.Interest.html" title="struct tracing_core::subscriber::Interest">Interest</a></h4></section></summary><div class="docblock"><p>Registers a new <a href="callsite/index.html" title="mod tracing_core::callsite">callsite</a> with this subscriber, returning whether or not
|
||
the subscriber is interested in being notified about the callsite.</p>
|
||
<p>By default, this function assumes that the subscriber’s <a href="trait.Subscriber.html#tymethod.enabled">filter</a>
|
||
represents an unchanging view of its interest in the callsite. However,
|
||
if this is not the case, subscribers may override this function to
|
||
indicate different interests, or to implement behaviour that should run
|
||
once for every callsite.</p>
|
||
<p>This function is guaranteed to be called at least once per callsite on
|
||
every active subscriber. The subscriber may store the keys to fields it
|
||
cares about in order to reduce the cost of accessing fields by name,
|
||
preallocate storage for that callsite, or perform any other actions it
|
||
wishes to perform once for each callsite.</p>
|
||
<p>The subscriber should then return an <a href="subscriber/struct.Interest.html" title="struct tracing_core::subscriber::Interest"><code>Interest</code></a>, indicating
|
||
whether it is interested in being notified about that callsite in the
|
||
future. This may be <code>Always</code> indicating that the subscriber always
|
||
wishes to be notified about the callsite, and its filter need not be
|
||
re-evaluated; <code>Sometimes</code>, indicating that the subscriber may sometimes
|
||
care about the callsite but not always (such as when sampling), or
|
||
<code>Never</code>, indicating that the subscriber never wishes to be notified about
|
||
that callsite. If all active subscribers return <code>Never</code>, a callsite will
|
||
never be enabled unless a new subscriber expresses interest in it.</p>
|
||
<p><code>Subscriber</code>s which require their filters to be run every time an event
|
||
occurs or a span is entered/exited should return <code>Interest::sometimes</code>.
|
||
If a subscriber returns <code>Interest::sometimes</code>, then its <a href="trait.Subscriber.html#tymethod.enabled" title="method tracing_core::Subscriber::enabled"><code>enabled</code></a> method
|
||
will be called every time an event or span is created from that callsite.</p>
|
||
<p>For example, suppose a sampling subscriber is implemented by
|
||
incrementing a counter every time <code>enabled</code> is called and only returning
|
||
<code>true</code> when the counter is divisible by a specified sampling rate. If
|
||
that subscriber returns <code>Interest::always</code> from <code>register_callsite</code>, then
|
||
the filter will not be re-evaluated once it has been applied to a given
|
||
set of metadata. Thus, the counter will not be incremented, and the span
|
||
or event that corresponds to the metadata will never be <code>enabled</code>.</p>
|
||
<p><code>Subscriber</code>s that need to change their filters occasionally should call
|
||
<a href="callsite/fn.rebuild_interest_cache.html" title="fn tracing_core::callsite::rebuild_interest_cache"><code>rebuild_interest_cache</code></a> to re-evaluate <code>register_callsite</code> for all
|
||
callsites.</p>
|
||
<p>Similarly, if a <code>Subscriber</code> has a filtering strategy that can be
|
||
changed dynamically at runtime, it would need to re-evaluate that filter
|
||
if the cached results have changed.</p>
|
||
<p>A subscriber which manages fanout to multiple other subscribers
|
||
should proxy this decision to all of its child subscribers,
|
||
returning <code>Interest::never</code> only if <em>all</em> such children return
|
||
<code>Interest::never</code>. If the set of subscribers to which spans are
|
||
broadcast may change dynamically, the subscriber should also never
|
||
return <code>Interest::Never</code>, as a new subscriber may be added that <em>is</em>
|
||
interested.</p>
|
||
<p>See the <a href="callsite/index.html#registering-callsites" title="mod tracing_core::callsite">documentation on the callsite registry</a> for more
|
||
details on how and when the <code>register_callsite</code> method is called.</p>
|
||
<h5 id="notes"><a class="doc-anchor" href="#notes">§</a>Notes</h5>
|
||
<p>This function may be called again when a new subscriber is created or
|
||
when the registry is invalidated.</p>
|
||
<p>If a subscriber returns <code>Interest::never</code> for a particular callsite, it
|
||
<em>may</em> still see spans and events originating from that callsite, if
|
||
another subscriber expressed interest in it.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.max_level_hint" class="method"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#230-232">source</a><h4 class="code-header">fn <a href="#method.max_level_hint" class="fn">max_level_hint</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/1.80.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="struct.LevelFilter.html" title="struct tracing_core::LevelFilter">LevelFilter</a>></h4></section></summary><div class="docblock"><p>Returns the highest <a href="struct.Level.html" title="struct tracing_core::Level">verbosity level</a> that this <code>Subscriber</code> will
|
||
enable, or <code>None</code>, if the subscriber does not implement level-based
|
||
filtering or chooses not to implement this method.</p>
|
||
<p>If this method returns a <a href="struct.Level.html" title="struct tracing_core::Level"><code>Level</code></a>, it will be used as a hint to
|
||
determine the most verbose level that will be enabled. This will allow
|
||
spans and events which are more verbose than that level to be skipped
|
||
more efficiently. Subscribers which perform filtering are strongly
|
||
encouraged to provide an implementation of this method.</p>
|
||
<p>If the maximum level the subscriber will enable can change over the
|
||
course of its lifetime, it is free to return a different value from
|
||
multiple invocations of this method. However, note that changes in the
|
||
maximum level will <strong>only</strong> be reflected after the callsite <a href="subscriber/struct.Interest.html" title="struct tracing_core::subscriber::Interest"><code>Interest</code></a>
|
||
cache is rebuilt, by calling the <a href="callsite/fn.rebuild_interest_cache.html" title="fn tracing_core::callsite::rebuild_interest_cache"><code>callsite::rebuild_interest_cache</code></a>
|
||
function. Therefore, if the subscriber will change the value returned by
|
||
this method, it is responsible for ensuring that
|
||
<a href="callsite/fn.rebuild_interest_cache.html" title="fn tracing_core::callsite::rebuild_interest_cache"><code>rebuild_interest_cache</code></a> is called after the value of the max
|
||
level changes.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.event_enabled" class="method"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#326-329">source</a><h4 class="code-header">fn <a href="#method.event_enabled" class="fn">event_enabled</a>(&self, event: &<a class="struct" href="struct.Event.html" title="struct tracing_core::Event">Event</a><'_>) -> <a class="primitive" href="https://doc.rust-lang.org/1.80.0/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Determine if an <a href="struct.Event.html" title="struct tracing_core::Event"><code>Event</code></a> should be recorded.</p>
|
||
<p>By default, this returns <code>true</code> and <code>Subscriber</code>s can filter events in
|
||
<a href="trait.Subscriber.html#tymethod.event"><code>event</code></a> without any penalty. However, when <code>event</code> is
|
||
more complicated, this can be used to determine if <code>event</code> should be
|
||
called at all, separating out the decision from the processing.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.clone_span" class="method"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#393-395">source</a><h4 class="code-header">fn <a href="#method.clone_span" class="fn">clone_span</a>(&self, id: &<a class="struct" href="span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>) -> <a class="struct" href="span/struct.Id.html" title="struct tracing_core::span::Id">Id</a></h4></section></summary><div class="docblock"><p>Notifies the subscriber that a <a href="span/struct.Id.html" title="struct tracing_core::span::Id">span ID</a> has been cloned.</p>
|
||
<p>This function is guaranteed to only be called with span IDs that were
|
||
returned by this subscriber’s <code>new_span</code> function.</p>
|
||
<p>Note that the default implementation of this function this is just the
|
||
identity function, passing through the identifier. However, it can be
|
||
used in conjunction with <a href="trait.Subscriber.html#method.try_close" title="method tracing_core::Subscriber::try_close"><code>try_close</code></a> to track the number of handles
|
||
capable of <code>enter</code>ing a span. When all the handles have been dropped
|
||
(i.e., <code>try_close</code> has been called one more time than <code>clone_span</code> for a
|
||
given ID), the subscriber may assume that the span will not be entered
|
||
again. It is then free to deallocate storage for data associated with
|
||
that span, write data from that span to IO, and so on.</p>
|
||
<p>For more unsafe situations, however, if <code>id</code> is itself a pointer of some
|
||
kind this can be used as a hook to “clone” the pointer, depending on
|
||
what that means for the specified pointer.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.drop_span" class="method"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#407">source</a><h4 class="code-header">fn <a href="#method.drop_span" class="fn">drop_span</a>(&self, _id: <a class="struct" href="span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>)</h4></section><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 0.1.2: use <code>Subscriber::try_close</code> instead</span></div></span></summary><div class="docblock"><p><strong>This method is deprecated.</strong></p>
|
||
<p>Using <code>drop_span</code> may result in subscribers composed using
|
||
<code>tracing-subscriber</code> crate’s <code>Layer</code> trait from observing close events.
|
||
Use <a href="trait.Subscriber.html#method.try_close" title="method tracing_core::Subscriber::try_close"><code>try_close</code></a> instead.</p>
|
||
<p>The default implementation of this function does nothing.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.try_close" class="method"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#445-449">source</a><h4 class="code-header">fn <a href="#method.try_close" class="fn">try_close</a>(&self, id: <a class="struct" href="span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>) -> <a class="primitive" href="https://doc.rust-lang.org/1.80.0/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Notifies the subscriber that a <a href="span/struct.Id.html" title="struct tracing_core::span::Id">span ID</a> has been dropped, and returns
|
||
<code>true</code> if there are now 0 IDs that refer to that span.</p>
|
||
<p>Higher-level libraries providing functionality for composing multiple
|
||
subscriber implementations may use this return value to notify any
|
||
“layered” subscribers that this subscriber considers the span closed.</p>
|
||
<p>The default implementation of this method calls the subscriber’s
|
||
<a href="trait.Subscriber.html#method.drop_span" title="method tracing_core::Subscriber::drop_span"><code>drop_span</code></a> method and returns <code>false</code>. This means that, unless the
|
||
subscriber overrides the default implementation, close notifications
|
||
will never be sent to any layered subscribers. In general, if the
|
||
subscriber tracks reference counts, this method should be implemented,
|
||
rather than <code>drop_span</code>.</p>
|
||
<p>This function is guaranteed to only be called with span IDs that were
|
||
returned by this subscriber’s <code>new_span</code> function.</p>
|
||
<p>It’s guaranteed that if this function has been called once more than the
|
||
number of times <code>clone_span</code> was called with the same <code>id</code>, then no more
|
||
handles that can enter the span with that <code>id</code> exist. This means that it
|
||
can be used in conjunction with <a href="trait.Subscriber.html#method.clone_span" title="method tracing_core::Subscriber::clone_span"><code>clone_span</code></a> to track the number of
|
||
handles capable of <code>enter</code>ing a span. When all the handles have been
|
||
dropped (i.e., <code>try_close</code> has been called one more time than
|
||
<code>clone_span</code> for a given ID), the subscriber may assume that the span
|
||
will not be entered again, and should return <code>true</code>. It is then free to
|
||
deallocate storage for data associated with that span, write data from
|
||
that span to IO, and so on.</p>
|
||
<p><strong>Note</strong>: since this function is called when spans are dropped,
|
||
implementations should ensure that they are unwind-safe. Panicking from
|
||
inside of a <code>try_close</code> function may cause a double panic, if the span
|
||
was dropped due to a thread unwinding.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.current_span" class="method"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#464-466">source</a><h4 class="code-header">fn <a href="#method.current_span" class="fn">current_span</a>(&self) -> <a class="struct" href="span/struct.Current.html" title="struct tracing_core::span::Current">Current</a></h4></section></summary><div class="docblock"><p>Returns a type representing this subscriber’s view of the current span.</p>
|
||
<p>If subscribers track a current span, they should override this function
|
||
to return <a href="span/struct.Current.html#tymethod.new" title="struct tracing_core::span::Current"><code>Current::new</code></a> if the thread from which this method is
|
||
called is inside a span, or <a href="span/struct.Current.html#tymethod.none" title="struct tracing_core::span::Current"><code>Current::none</code></a> if the thread is not
|
||
inside a span.</p>
|
||
<p>By default, this returns a value indicating that the subscriber
|
||
does <strong>not</strong> track what span is current. If the subscriber does not
|
||
implement a current span, it should not override this method.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.downcast_raw" class="method"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#495-501">source</a><h4 class="code-header">unsafe fn <a href="#method.downcast_raw" class="fn">downcast_raw</a>(&self, id: <a class="struct" href="https://doc.rust-lang.org/1.80.0/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a>) -> <a class="enum" href="https://doc.rust-lang.org/1.80.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/1.80.0/std/primitive.pointer.html">*const </a><a class="primitive" href="https://doc.rust-lang.org/1.80.0/std/primitive.unit.html">()</a>></h4></section></summary><div class="docblock"><p>If <code>self</code> is the same type as the provided <code>TypeId</code>, returns an untyped
|
||
<code>*const</code> pointer to that type. Otherwise, returns <code>None</code>.</p>
|
||
<p>If you wish to downcast a <code>Subscriber</code>, it is strongly advised to use
|
||
the safe API provided by <a href="#method.downcast_ref"><code>downcast_ref</code></a> instead.</p>
|
||
<p>This API is required for <code>downcast_raw</code> to be a trait method; a method
|
||
signature like <a href="#method.downcast_ref"><code>downcast_ref</code></a> (with a generic type parameter) is not
|
||
object-safe, and thus cannot be a trait method for <code>Subscriber</code>. This
|
||
means that if we only exposed <code>downcast_ref</code>, <code>Subscriber</code>
|
||
implementations could not override the downcasting behavior</p>
|
||
<p>This method may be overridden by “fan out” or “chained” subscriber
|
||
implementations which consist of multiple composed types. Such
|
||
subscribers might allow <code>downcast_raw</code> by returning references to those
|
||
component if they contain components with the given <code>TypeId</code>.</p>
|
||
<h5 id="safety"><a class="doc-anchor" href="#safety">§</a>Safety</h5>
|
||
<p>The <a href="#method.downcast_ref"><code>downcast_ref</code></a> method expects that the pointer returned by
|
||
<code>downcast_raw</code> is non-null and points to a valid instance of the type
|
||
with the provided <code>TypeId</code>. Failure to ensure this will result in
|
||
undefined behaviour, so implementing <code>downcast_raw</code> is unsafe.</p>
|
||
</div></details></div><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-dyn+Subscriber" class="impl"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#504-522">source</a><a href="#impl-dyn+Subscriber" class="anchor">§</a><h3 class="code-header">impl dyn <a class="trait" href="trait.Subscriber.html" title="trait tracing_core::Subscriber">Subscriber</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.is" class="method"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#506-508">source</a><h4 class="code-header">pub fn <a href="#method.is" class="fn">is</a><T: <a class="trait" href="https://doc.rust-lang.org/1.80.0/core/any/trait.Any.html" title="trait core::any::Any">Any</a>>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/1.80.0/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns <code>true</code> if this <code>Subscriber</code> is the same type as <code>T</code>.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.downcast_ref" class="method"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#512-521">source</a><h4 class="code-header">pub fn <a href="#method.downcast_ref" class="fn">downcast_ref</a><T: <a class="trait" href="https://doc.rust-lang.org/1.80.0/core/any/trait.Any.html" title="trait core::any::Any">Any</a>>(&self) -> <a class="enum" href="https://doc.rust-lang.org/1.80.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/1.80.0/std/primitive.reference.html">&T</a>></h4></section></summary><div class="docblock"><p>Returns some reference to this <code>Subscriber</code> value if it is of type <code>T</code>,
|
||
or <code>None</code> if it isn’t.</p>
|
||
</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-dyn+Subscriber+%2B+Send" class="impl"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#524-542">source</a><a href="#impl-dyn+Subscriber+%2B+Send" class="anchor">§</a><h3 class="code-header">impl dyn <a class="trait" href="trait.Subscriber.html" title="trait tracing_core::Subscriber">Subscriber</a> + <a class="trait" href="https://doc.rust-lang.org/1.80.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.is-1" class="method"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#526-528">source</a><h4 class="code-header">pub fn <a href="#method.is-1" class="fn">is</a><T: <a class="trait" href="https://doc.rust-lang.org/1.80.0/core/any/trait.Any.html" title="trait core::any::Any">Any</a>>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/1.80.0/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns <code>true</code> if this <a href="trait.Subscriber.html" title="trait tracing_core::Subscriber"><code>Subscriber</code></a> is the same type as <code>T</code>.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.downcast_ref-1" class="method"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#532-541">source</a><h4 class="code-header">pub fn <a href="#method.downcast_ref-1" class="fn">downcast_ref</a><T: <a class="trait" href="https://doc.rust-lang.org/1.80.0/core/any/trait.Any.html" title="trait core::any::Any">Any</a>>(&self) -> <a class="enum" href="https://doc.rust-lang.org/1.80.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/1.80.0/std/primitive.reference.html">&T</a>></h4></section></summary><div class="docblock"><p>Returns some reference to this <a href="trait.Subscriber.html" title="trait tracing_core::Subscriber"><code>Subscriber</code></a> value if it is of type <code>T</code>,
|
||
or <code>None</code> if it isn’t.</p>
|
||
</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-dyn+Subscriber+%2B+Sync" class="impl"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#544-562">source</a><a href="#impl-dyn+Subscriber+%2B+Sync" class="anchor">§</a><h3 class="code-header">impl dyn <a class="trait" href="trait.Subscriber.html" title="trait tracing_core::Subscriber">Subscriber</a> + <a class="trait" href="https://doc.rust-lang.org/1.80.0/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.is-2" class="method"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#546-548">source</a><h4 class="code-header">pub fn <a href="#method.is-2" class="fn">is</a><T: <a class="trait" href="https://doc.rust-lang.org/1.80.0/core/any/trait.Any.html" title="trait core::any::Any">Any</a>>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/1.80.0/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns <code>true</code> if this <a href="trait.Subscriber.html" title="trait tracing_core::Subscriber"><code>Subscriber</code></a> is the same type as <code>T</code>.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.downcast_ref-2" class="method"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#552-561">source</a><h4 class="code-header">pub fn <a href="#method.downcast_ref-2" class="fn">downcast_ref</a><T: <a class="trait" href="https://doc.rust-lang.org/1.80.0/core/any/trait.Any.html" title="trait core::any::Any">Any</a>>(&self) -> <a class="enum" href="https://doc.rust-lang.org/1.80.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/1.80.0/std/primitive.reference.html">&T</a>></h4></section></summary><div class="docblock"><p>Returns some reference to this <code>[</code>Subscriber<code>] value if it is of type </code>T<code>, or </code>None` if it isn’t.</p>
|
||
</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-dyn+Subscriber+%2B+Send+%2B+Sync" class="impl"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#564-582">source</a><a href="#impl-dyn+Subscriber+%2B+Send+%2B+Sync" class="anchor">§</a><h3 class="code-header">impl dyn <a class="trait" href="trait.Subscriber.html" title="trait tracing_core::Subscriber">Subscriber</a> + <a class="trait" href="https://doc.rust-lang.org/1.80.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/1.80.0/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.is-3" class="method"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#566-568">source</a><h4 class="code-header">pub fn <a href="#method.is-3" class="fn">is</a><T: <a class="trait" href="https://doc.rust-lang.org/1.80.0/core/any/trait.Any.html" title="trait core::any::Any">Any</a>>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/1.80.0/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns <code>true</code> if this <a href="trait.Subscriber.html" title="trait tracing_core::Subscriber"><code>Subscriber</code></a> is the same type as <code>T</code>.</p>
|
||
</div></details><details class="toggle method-toggle" open><summary><section id="method.downcast_ref-3" class="method"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#572-581">source</a><h4 class="code-header">pub fn <a href="#method.downcast_ref-3" class="fn">downcast_ref</a><T: <a class="trait" href="https://doc.rust-lang.org/1.80.0/core/any/trait.Any.html" title="trait core::any::Any">Any</a>>(&self) -> <a class="enum" href="https://doc.rust-lang.org/1.80.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/1.80.0/std/primitive.reference.html">&T</a>></h4></section></summary><div class="docblock"><p>Returns some reference to this <a href="trait.Subscriber.html" title="trait tracing_core::Subscriber"><code>Subscriber</code></a> value if it is of type <code>T</code>,
|
||
or <code>None</code> if it isn’t.</p>
|
||
</div></details></div></details></div><h2 id="foreign-impls" class="section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-Subscriber-for-Box%3CS%3E" class="impl"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#710-793">source</a><a href="#impl-Subscriber-for-Box%3CS%3E" class="anchor">§</a><h3 class="code-header">impl<S> <a class="trait" href="trait.Subscriber.html" title="trait tracing_core::Subscriber">Subscriber</a> for <a class="struct" href="https://doc.rust-lang.org/1.80.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a><S><div class="where">where
|
||
S: <a class="trait" href="trait.Subscriber.html" title="trait tracing_core::Subscriber">Subscriber</a> + ?<a class="trait" href="https://doc.rust-lang.org/1.80.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><section id="method.register_callsite-1" class="method trait-impl"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#715-717">source</a><a href="#method.register_callsite-1" class="anchor">§</a><h4 class="code-header">fn <a href="#method.register_callsite" class="fn">register_callsite</a>(&self, metadata: &'static <a class="struct" href="struct.Metadata.html" title="struct tracing_core::Metadata">Metadata</a><'static>) -> <a class="struct" href="subscriber/struct.Interest.html" title="struct tracing_core::subscriber::Interest">Interest</a></h4></section><section id="method.enabled" class="method trait-impl"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#720-722">source</a><a href="#method.enabled" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.enabled" class="fn">enabled</a>(&self, metadata: &<a class="struct" href="struct.Metadata.html" title="struct tracing_core::Metadata">Metadata</a><'_>) -> <a class="primitive" href="https://doc.rust-lang.org/1.80.0/std/primitive.bool.html">bool</a></h4></section><section id="method.max_level_hint-1" class="method trait-impl"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#725-727">source</a><a href="#method.max_level_hint-1" class="anchor">§</a><h4 class="code-header">fn <a href="#method.max_level_hint" class="fn">max_level_hint</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/1.80.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="struct.LevelFilter.html" title="struct tracing_core::LevelFilter">LevelFilter</a>></h4></section><section id="method.new_span" class="method trait-impl"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#730-732">source</a><a href="#method.new_span" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.new_span" class="fn">new_span</a>(&self, span: &<a class="struct" href="span/struct.Attributes.html" title="struct tracing_core::span::Attributes">Attributes</a><'_>) -> <a class="struct" href="span/struct.Id.html" title="struct tracing_core::span::Id">Id</a></h4></section><section id="method.record" class="method trait-impl"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#735-737">source</a><a href="#method.record" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.record" class="fn">record</a>(&self, span: &<a class="struct" href="span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>, values: &<a class="struct" href="span/struct.Record.html" title="struct tracing_core::span::Record">Record</a><'_>)</h4></section><section id="method.record_follows_from" class="method trait-impl"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#740-742">source</a><a href="#method.record_follows_from" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.record_follows_from" class="fn">record_follows_from</a>(&self, span: &<a class="struct" href="span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>, follows: &<a class="struct" href="span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>)</h4></section><section id="method.event_enabled-1" class="method trait-impl"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#745-747">source</a><a href="#method.event_enabled-1" class="anchor">§</a><h4 class="code-header">fn <a href="#method.event_enabled" class="fn">event_enabled</a>(&self, event: &<a class="struct" href="struct.Event.html" title="struct tracing_core::Event">Event</a><'_>) -> <a class="primitive" href="https://doc.rust-lang.org/1.80.0/std/primitive.bool.html">bool</a></h4></section><section id="method.event" class="method trait-impl"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#750-752">source</a><a href="#method.event" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.event" class="fn">event</a>(&self, event: &<a class="struct" href="struct.Event.html" title="struct tracing_core::Event">Event</a><'_>)</h4></section><section id="method.enter" class="method trait-impl"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#755-757">source</a><a href="#method.enter" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.enter" class="fn">enter</a>(&self, span: &<a class="struct" href="span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>)</h4></section><section id="method.exit" class="method trait-impl"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#760-762">source</a><a href="#method.exit" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.exit" class="fn">exit</a>(&self, span: &<a class="struct" href="span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>)</h4></section><section id="method.clone_span-1" class="method trait-impl"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#765-767">source</a><a href="#method.clone_span-1" class="anchor">§</a><h4 class="code-header">fn <a href="#method.clone_span" class="fn">clone_span</a>(&self, id: &<a class="struct" href="span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>) -> <a class="struct" href="span/struct.Id.html" title="struct tracing_core::span::Id">Id</a></h4></section><section id="method.try_close-1" class="method trait-impl"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#770-772">source</a><a href="#method.try_close-1" class="anchor">§</a><h4 class="code-header">fn <a href="#method.try_close" class="fn">try_close</a>(&self, id: <a class="struct" href="span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>) -> <a class="primitive" href="https://doc.rust-lang.org/1.80.0/std/primitive.bool.html">bool</a></h4></section><details class="toggle method-toggle" open><summary><section id="method.drop_span-1" class="method trait-impl"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#776-778">source</a><a href="#method.drop_span-1" class="anchor">§</a><h4 class="code-header">fn <a href="#method.drop_span" class="fn">drop_span</a>(&self, id: <a class="struct" href="span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>)</h4></section></summary><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 0.1.2: use <code>Subscriber::try_close</code> instead</span></div></span></details><section id="method.current_span-1" class="method trait-impl"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#781-783">source</a><a href="#method.current_span-1" class="anchor">§</a><h4 class="code-header">fn <a href="#method.current_span" class="fn">current_span</a>(&self) -> <a class="struct" href="span/struct.Current.html" title="struct tracing_core::span::Current">Current</a></h4></section><section id="method.downcast_raw-1" class="method trait-impl"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#786-792">source</a><a href="#method.downcast_raw-1" class="anchor">§</a><h4 class="code-header">unsafe fn <a href="#method.downcast_raw" class="fn">downcast_raw</a>(&self, id: <a class="struct" href="https://doc.rust-lang.org/1.80.0/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a>) -> <a class="enum" href="https://doc.rust-lang.org/1.80.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/1.80.0/std/primitive.pointer.html">*const </a><a class="primitive" href="https://doc.rust-lang.org/1.80.0/std/primitive.unit.html">()</a>></h4></section></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Subscriber-for-Arc%3CS%3E" class="impl"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#795-878">source</a><a href="#impl-Subscriber-for-Arc%3CS%3E" class="anchor">§</a><h3 class="code-header">impl<S> <a class="trait" href="trait.Subscriber.html" title="trait tracing_core::Subscriber">Subscriber</a> for <a class="struct" href="https://doc.rust-lang.org/1.80.0/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a><S><div class="where">where
|
||
S: <a class="trait" href="trait.Subscriber.html" title="trait tracing_core::Subscriber">Subscriber</a> + ?<a class="trait" href="https://doc.rust-lang.org/1.80.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><section id="method.register_callsite-2" class="method trait-impl"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#800-802">source</a><a href="#method.register_callsite-2" class="anchor">§</a><h4 class="code-header">fn <a href="#method.register_callsite" class="fn">register_callsite</a>(&self, metadata: &'static <a class="struct" href="struct.Metadata.html" title="struct tracing_core::Metadata">Metadata</a><'static>) -> <a class="struct" href="subscriber/struct.Interest.html" title="struct tracing_core::subscriber::Interest">Interest</a></h4></section><section id="method.enabled-1" class="method trait-impl"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#805-807">source</a><a href="#method.enabled-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.enabled" class="fn">enabled</a>(&self, metadata: &<a class="struct" href="struct.Metadata.html" title="struct tracing_core::Metadata">Metadata</a><'_>) -> <a class="primitive" href="https://doc.rust-lang.org/1.80.0/std/primitive.bool.html">bool</a></h4></section><section id="method.max_level_hint-2" class="method trait-impl"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#810-812">source</a><a href="#method.max_level_hint-2" class="anchor">§</a><h4 class="code-header">fn <a href="#method.max_level_hint" class="fn">max_level_hint</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/1.80.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="struct.LevelFilter.html" title="struct tracing_core::LevelFilter">LevelFilter</a>></h4></section><section id="method.new_span-1" class="method trait-impl"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#815-817">source</a><a href="#method.new_span-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.new_span" class="fn">new_span</a>(&self, span: &<a class="struct" href="span/struct.Attributes.html" title="struct tracing_core::span::Attributes">Attributes</a><'_>) -> <a class="struct" href="span/struct.Id.html" title="struct tracing_core::span::Id">Id</a></h4></section><section id="method.record-1" class="method trait-impl"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#820-822">source</a><a href="#method.record-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.record" class="fn">record</a>(&self, span: &<a class="struct" href="span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>, values: &<a class="struct" href="span/struct.Record.html" title="struct tracing_core::span::Record">Record</a><'_>)</h4></section><section id="method.record_follows_from-1" class="method trait-impl"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#825-827">source</a><a href="#method.record_follows_from-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.record_follows_from" class="fn">record_follows_from</a>(&self, span: &<a class="struct" href="span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>, follows: &<a class="struct" href="span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>)</h4></section><section id="method.event_enabled-2" class="method trait-impl"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#830-832">source</a><a href="#method.event_enabled-2" class="anchor">§</a><h4 class="code-header">fn <a href="#method.event_enabled" class="fn">event_enabled</a>(&self, event: &<a class="struct" href="struct.Event.html" title="struct tracing_core::Event">Event</a><'_>) -> <a class="primitive" href="https://doc.rust-lang.org/1.80.0/std/primitive.bool.html">bool</a></h4></section><section id="method.event-1" class="method trait-impl"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#835-837">source</a><a href="#method.event-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.event" class="fn">event</a>(&self, event: &<a class="struct" href="struct.Event.html" title="struct tracing_core::Event">Event</a><'_>)</h4></section><section id="method.enter-1" class="method trait-impl"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#840-842">source</a><a href="#method.enter-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.enter" class="fn">enter</a>(&self, span: &<a class="struct" href="span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>)</h4></section><section id="method.exit-1" class="method trait-impl"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#845-847">source</a><a href="#method.exit-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.exit" class="fn">exit</a>(&self, span: &<a class="struct" href="span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>)</h4></section><section id="method.clone_span-2" class="method trait-impl"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#850-852">source</a><a href="#method.clone_span-2" class="anchor">§</a><h4 class="code-header">fn <a href="#method.clone_span" class="fn">clone_span</a>(&self, id: &<a class="struct" href="span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>) -> <a class="struct" href="span/struct.Id.html" title="struct tracing_core::span::Id">Id</a></h4></section><section id="method.try_close-2" class="method trait-impl"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#855-857">source</a><a href="#method.try_close-2" class="anchor">§</a><h4 class="code-header">fn <a href="#method.try_close" class="fn">try_close</a>(&self, id: <a class="struct" href="span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>) -> <a class="primitive" href="https://doc.rust-lang.org/1.80.0/std/primitive.bool.html">bool</a></h4></section><details class="toggle method-toggle" open><summary><section id="method.drop_span-2" class="method trait-impl"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#861-863">source</a><a href="#method.drop_span-2" class="anchor">§</a><h4 class="code-header">fn <a href="#method.drop_span" class="fn">drop_span</a>(&self, id: <a class="struct" href="span/struct.Id.html" title="struct tracing_core::span::Id">Id</a>)</h4></section></summary><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 0.1.2: use <code>Subscriber::try_close</code> instead</span></div></span></details><section id="method.current_span-2" class="method trait-impl"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#866-868">source</a><a href="#method.current_span-2" class="anchor">§</a><h4 class="code-header">fn <a href="#method.current_span" class="fn">current_span</a>(&self) -> <a class="struct" href="span/struct.Current.html" title="struct tracing_core::span::Current">Current</a></h4></section><section id="method.downcast_raw-2" class="method trait-impl"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#871-877">source</a><a href="#method.downcast_raw-2" class="anchor">§</a><h4 class="code-header">unsafe fn <a href="#method.downcast_raw" class="fn">downcast_raw</a>(&self, id: <a class="struct" href="https://doc.rust-lang.org/1.80.0/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a>) -> <a class="enum" href="https://doc.rust-lang.org/1.80.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/1.80.0/std/primitive.pointer.html">*const </a><a class="primitive" href="https://doc.rust-lang.org/1.80.0/std/primitive.unit.html">()</a>></h4></section></div></details><h2 id="implementors" class="section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-Subscriber-for-NoSubscriber" class="impl"><a class="src rightside" href="../src/tracing_core/subscriber.rs.html#677-700">source</a><a href="#impl-Subscriber-for-NoSubscriber" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Subscriber.html" title="trait tracing_core::Subscriber">Subscriber</a> for <a class="struct" href="subscriber/struct.NoSubscriber.html" title="struct tracing_core::subscriber::NoSubscriber">NoSubscriber</a></h3></section></div><script src="../trait.impl/tracing_core/subscriber/trait.Subscriber.js" data-ignore-extern-crates="alloc" async></script></section></div></main></body></html> |