Struct tracing_setup::dispatcher::WeakDispatch
source · pub struct WeakDispatch { /* private fields */ }Expand description
WeakDispatch is a version of Dispatch that holds a non-owning reference
to a Subscriber.
The Subscriber may be accessed by calling [WeakDispatch::upgrade], which returns an Option. If all [Dispatch] clones that point at the Subscriber have been dropped, [WeakDispatch::upgrade] will return None. Otherwise, it will return Some(Dispatch)`.
A WeakDispatch may be created from a Dispatch by calling the
Dispatch::downgrade method. The primary use for creating a
WeakDispatch is to allow a Subscriber` to hold a cyclical reference to
itself without creating a memory leak. See here for details.
This type is analogous to the std::sync::Weak type, but for a
Dispatch rather than an Arc.
Implementations§
source§impl WeakDispatch
impl WeakDispatch
sourcepub fn upgrade(&self) -> Option<Dispatch>
pub fn upgrade(&self) -> Option<Dispatch>
Attempts to upgrade this WeakDispatch to a Dispatch.
Returns None if the referenced Dispatch has already been dropped.
§Examples
let strong = Dispatch::new(NoSubscriber::default());
let weak = strong.downgrade();
// The strong here keeps it alive, so we can still access the object.
assert!(weak.upgrade().is_some());
drop(strong); // But not any more.
assert!(weak.upgrade().is_none());Trait Implementations§
source§impl Clone for WeakDispatch
impl Clone for WeakDispatch
source§fn clone(&self) -> WeakDispatch
fn clone(&self) -> WeakDispatch
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more