Struct tracing_capture::CapturedSpan

source ·
pub struct CapturedSpan<'a> { /* private fields */ }
Expand description

Captured tracing span containing a reference to its Metadata, values that the span was created with, stats, and descendant CapturedEvents.

CapturedSpans are comparable and are partially ordered according to the capture order. Spans are considered equal iff both are aliases of the same span; i.e., equality is reference-based rather than content-based. Two spans from different Storages are not ordered and are always non-equal.

Values recorded with the span can be accessed by indexing or using Self::value(), or iterated over using Self::values().

§Examples

let span: CapturedSpan = // ...
// Accessing event metadata and fields:
assert_eq!(*span.metadata().level(), Level::INFO);
assert_eq!(span["arg"], 42_u64);
assert!(span.value("other_arg").is_none());
// Filtering unsigned integer values:
let numbers = span.values().filter_map(|(_, val)| val.as_uint());

// Accessing the parent span:
let parent_name = span.parent().unwrap().metadata().name();
assert!(span
    .ancestors()
    .any(|span| span.metadata().name() == "test"));

// Accessing child spans and events:
assert!(span.children().len() > 0);
let child_messages: Vec<&str> = span
    .events()
    .filter_map(|event| event.message())
    .collect();
let descendant_span =
    span.descendants().find(|span| span["input"] == "!").unwrap();

Implementations§

source§

impl<'a> CapturedSpan<'a>

source

pub fn deep_scan_spans(self) -> Scanner<Self, DescendantSpans<'a>>

Deeply scans all descendants of this span.

source

pub fn deep_scan_events(self) -> Scanner<Self, DescendantEvents<'a>>

Deeply scans all descendant events of this span.

source§

impl<'a> CapturedSpan<'a>

source

pub fn metadata(&self) -> &'static Metadata<'static>

Provides a reference to the span metadata.

source

pub fn values(&self) -> impl Iterator<Item = (&'a str, &'a TracedValue)> + 'a

Iterates over values that the span was created with, or which were recorded later.

source

pub fn value(&self, name: &str) -> Option<&'a TracedValue>

Returns a value for the specified field, or None if the value is not defined.

source

pub fn stats(&self) -> SpanStats

Returns statistics about span operations.

source

pub fn events(&self) -> CapturedEvents<'a>

Returns events attached to this span.

source

pub fn parent(&self) -> Option<Self>

Returns the reference to the parent span, if any.

source

pub fn ancestors(&self) -> impl Iterator<Item = CapturedSpan<'a>> + '_

Returns the references to the ancestor spans, starting from the direct parent and ending in one of root spans.

source

pub fn children(&self) -> CapturedSpans<'a>

Iterates over the direct children of this span, in the order of their capture.

source

pub fn descendants(&self) -> DescendantSpans<'a>

Iterates over the descendants of this span.

In the simplest case (spans are not re-entered, span parents are contextual), the iteration order is the span capture order. In the general case, no particular order is guaranteed.

source

pub fn descendant_events(&self) -> DescendantEvents<'a>

Iterates over the descendant events of this span. The iteration order is not specified.

Trait Implementations§

source§

impl<'a> Captured<'a> for CapturedSpan<'a>

source§

fn metadata(&self) -> &'static Metadata<'static>

Provides a reference to the span / event metadata.
source§

fn value(&self, name: &str) -> Option<&'a TracedValue>

Returns a value for the specified field, or None if the value is not defined.
source§

fn parent(&self) -> Option<CapturedSpan<'a>>

Returns the reference to the parent span, if any.
source§

impl<'a> Clone for CapturedSpan<'a>

source§

fn clone(&self) -> CapturedSpan<'a>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<'a> Debug for CapturedSpan<'a>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Index<&str> for CapturedSpan<'_>

§

type Output = TracedValue

The returned type after indexing.
source§

fn index(&self, index: &str) -> &Self::Output

Performs the indexing (container[index]) operation. Read more
source§

impl PartialEq for CapturedSpan<'_>

source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd for CapturedSpan<'_>

source§

fn partial_cmp(&self, other: &Self) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl<P: Predicate<str>> Predicate<CapturedSpan<'_>> for NamePredicate<P>

source§

fn eval(&self, variable: &CapturedSpan<'_>) -> bool

Execute this Predicate against variable, returning the resulting boolean.
source§

fn find_case( &self, expected: bool, variable: &CapturedSpan<'_>, ) -> Option<Case<'_>>

Find a case that proves this predicate as expected when run against variable.
source§

impl<'a> ScanExt<'a> for CapturedSpan<'a>

Scans for CapturedSpan are shallow, i.e. include only direct children spans / events.

source§

fn scan_spans(self) -> Scanner<Self, CapturedSpans<'a>>

Creates a scanner for the spans contained by this holder. What is meant by “contained” (i.e., whether the scan is deep or shallow), depends on the holder type and is documented at the corresponding impl.
source§

fn scan_events(self) -> Scanner<Self, CapturedEvents<'a>>

Creates a scanner for the events contained by this holder. What is meant by “contained” (i.e., whether the scan is deep or shallow), depends on the holder type and is documented at the corresponding impl.
source§

impl<'a> Copy for CapturedSpan<'a>

source§

impl Eq for CapturedSpan<'_>

Auto Trait Implementations§

§

impl<'a> Freeze for CapturedSpan<'a>

§

impl<'a> !RefUnwindSafe for CapturedSpan<'a>

§

impl<'a> Send for CapturedSpan<'a>

§

impl<'a> Sync for CapturedSpan<'a>

§

impl<'a> Unpin for CapturedSpan<'a>

§

impl<'a> !UnwindSafe for CapturedSpan<'a>

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where T: Clone,

source§

default unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> CloneToUninit for T
where T: Copy,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more