Struct Dispatch
pub struct Dispatch { /* private fields */ }Expand description
Dispatch trace data to a Collect.
Implementations§
§impl Dispatch
impl Dispatch
pub fn from_static(collector: &'static (dyn Collect + Send + Sync)) -> Dispatch
pub fn from_static(collector: &'static (dyn Collect + Send + Sync)) -> Dispatch
Returns a Dispatch that forwards to the given static collector.
Unlike Dispatch::new, this function is always available on all
platforms, even when the std or alloc features are disabled.
In order to use from_static, the Collector itself must be stored in
a static. For example:
struct MyCollector {
// ...
}
impl tracing_core::Collect for MyCollector {
// ...
}
static COLLECTOR: MyCollector = MyCollector {
// ...
};
fn main() {
use tracing_core::dispatch::{self, Dispatch};
let dispatch = Dispatch::from_static(&COLLECTOR);
dispatch::set_global_default(dispatch)
.expect("no global default collector should have been set previously!");
}Constructing the collector in a static initializer may make some forms
of runtime configuration more challenging. If this is the case, users
with access to liballoc or the Rust standard library are encouraged to
use Dispatch::new rather than from_static. no_std users who
cannot allocate or do not have access to liballoc may want to consider
the once_cell crate, or another library which allows lazy
initialization of statics.
pub fn downgrade(&self) -> WeakDispatch
pub fn downgrade(&self) -> WeakDispatch
Creates a WeakDispatch from this Dispatch.
A WeakDispatch is similar to a Dispatch, but it does not prevent
the underlying collector from being dropped. Instead, it only permits
access while other references to the collector exist. This is equivalent
to the standard library’s Arc::downgrade method, but for Dispatch
rather than Arc.
The primary use for creating a WeakDispatch is to allow a collector
to hold a cyclical reference to itself without creating a memory leak.
See here for details.
pub fn register_callsite(
&self,
metadata: &'static Metadata<'static>,
) -> Interest
pub fn register_callsite( &self, metadata: &'static Metadata<'static>, ) -> Interest
Registers a new callsite with this collector, returning whether or not the collector is interested in being notified about the callsite.
This calls the register_callsite function on the Collect
that this Dispatch forwards to.
pub fn new_span(&self, span: &Attributes<'_>) -> Id
pub fn new_span(&self, span: &Attributes<'_>) -> Id
pub fn record_follows_from(&self, span: &Id, follows: &Id)
pub fn record_follows_from(&self, span: &Id, follows: &Id)
Adds an indication that span follows from the span with the id
follows.
This calls the record_follows_from function on the Collect
that this Dispatch forwards to.
pub fn clone_span(&self, id: &Id) -> Id
pub fn clone_span(&self, id: &Id) -> Id
Notifies the collector that a span ID has been cloned.
This function must only be called with span IDs that were returned by
this Dispatch’s new_span function. The tracing crate upholds
this guarantee and any other libraries implementing instrumentation APIs
must as well.
This calls the clone_span function on the Collect that this
Dispatch forwards to.
pub fn drop_span(&self, id: Id)
👎Deprecated since 0.1.2: use Dispatch::try_close instead
pub fn drop_span(&self, id: Id)
Dispatch::try_close insteadNotifies the collector that a span ID has been dropped.
This function must only be called with span IDs that were returned by
this Dispatch’s new_span function. The tracing crate upholds
this guarantee and any other libraries implementing instrumentation APIs
must as well.
This calls the drop_span function on the Collect that this
Dispatch forwards to.
Deprecated: The
try_closemethod is functionally identical, but returnstrueif the span is now closed. It should be used instead of this method.
pub fn try_close(&self, id: Id) -> bool
pub fn try_close(&self, id: Id) -> bool
Notifies the collector that a span ID has been dropped, and returns
true if there are now 0 IDs referring to that span.
This function must only be called with span IDs that were returned by
this Dispatch’s new_span function. The tracing crate upholds
this guarantee and any other libraries implementing instrumentation APIs
must as well.
This calls the try_close function on the Collect trait
that this Dispatch forwards to.
pub fn current_span(&self) -> Current
pub fn current_span(&self) -> Current
pub fn is<T>(&self) -> boolwhere
T: Any,
pub fn is<T>(&self) -> boolwhere
T: Any,
Returns true if this Dispatch forwards to a collector of type
T.
pub fn downcast_ref<T>(&self) -> Option<&T>where
T: Any,
pub fn downcast_ref<T>(&self) -> Option<&T>where
T: Any,
Returns some reference to the Collect this Dispatch forwards to
if it is of type T, or None if it isn’t.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Dispatch
impl !RefUnwindSafe for Dispatch
impl Send for Dispatch
impl Sync for Dispatch
impl Unpin for Dispatch
impl !UnwindSafe for Dispatch
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> WithCollector for T
impl<T> WithCollector for T
Source§fn with_collector<C>(self, collector: C) -> WithDispatch<Self> ⓘ
fn with_collector<C>(self, collector: C) -> WithDispatch<Self> ⓘ
std only.Source§fn with_current_collector(self) -> WithDispatch<Self> ⓘ
fn with_current_collector(self) -> WithDispatch<Self> ⓘ
std only.