Skip to main content

SpanCtxt

Struct SpanCtxt 

Source
pub struct SpanCtxt { /* private fields */ }
Expand description

The trace id, span id, and parent span id of a span.

These ids can be used to identify the distributed trace a span belongs to, and to identify the span itself within that trace.

The SpanCtxt for the currently executing span can be pulled from the ambient context with SpanCtxt::current. Once a SpanCtxt is constructed, a new child context can be generated by SpanCtxt::new_child.

SpanCtxt should be pushed onto the ambient context with SpanCtxt::push so any events emitted during its execution are correlated to it.

Implementations§

Source§

impl SpanCtxt

Source

pub const fn new( trace_id: Option<TraceId>, span_parent: Option<SpanId>, span_id: Option<SpanId>, ) -> Self

Create the context from a set of identifiers.

The trace_id and span_id should both be Some, but span_parent may be None if the span is at the root of the distributed trace.

If trace_id or span_id are None then the context is invalid, but can still be used.

Source

pub const fn empty() -> Self

Create a context where all identifiers are None.

Source

pub fn new_root(rng: impl Rng) -> Self

Generate a new context.

Source

pub fn current(ctxt: impl Ctxt) -> Self

Read the current context from an ambient Ctxt.

This method will pull the TraceId from KEY_TRACE_ID, the SpanId from KEY_SPAN_ID, and the parent SpanId from KEY_SPAN_PARENT.

Source

pub fn new_child(&self, rng: impl Rng) -> Self

Generate a new context that is a child of self.

The new context will share the same trace id as self, use the span id of self as its parent span id, and generate a new random span id as its own through SpanId::random.

If Self::trace_id is None then a new trace id will be generated through TraceId::random.

Source

pub fn trace_id(&self) -> Option<&TraceId>

Get the trace id for the span.

Source

pub fn span_parent(&self) -> Option<&SpanId>

Get the parent of the span.

Source

pub fn span_id(&self) -> Option<&SpanId>

Get the id of the span.

Source

pub fn push<T: Ctxt>(&self, ctxt: T) -> Frame<T>

Push the SpanCtxt onto the ambient context.

The trace id, span id, and parent span id will be pushed to the context. This ensures diagnostics emitted during the execution of this span are properly linked to it.

Trait Implementations§

Source§

impl Clone for SpanCtxt

Source§

fn clone(&self) -> SpanCtxt

Returns a duplicate 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 Debug for SpanCtxt

Source§

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

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

impl Hash for SpanCtxt

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for SpanCtxt

Source§

fn eq(&self, other: &SpanCtxt) -> 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 Props for SpanCtxt

Source§

fn for_each<'kv, F: FnMut(Str<'kv>, Value<'kv>) -> ControlFlow<()>>( &'kv self, for_each: F, ) -> ControlFlow<()>

Enumerate the Str and Value pairs. Read more
Source§

fn get<'v, K>(&'v self, key: K) -> Option<Value<'v>>
where K: ToStr,

Get the value for a given key, if it’s present. Read more
Source§

fn pull<'kv, V, K>(&'kv self, key: K) -> Option<V>
where V: FromValue<'kv>, K: ToStr,

Get the value for a given key, if it’s present as an instance of V. Read more
Source§

fn and_props<U>(self, other: U) -> And<Self, U>
where U: Props, Self: Sized,

Concatenate other to the end of self.
Source§

fn filter<F>(self, filter: F) -> Filter<Self, F>
where F: Fn(Str<'_>, Value<'_>) -> bool, Self: Sized,

Filter the set of properties. Read more
Source§

fn collect<'kv, C>(&'kv self) -> C
where C: FromProps<'kv>,

Collect these properties into another collection type. Read more
Source§

fn as_map(&self) -> &AsMap<Self>
where Self: Sized,

Get an adapter that will serialize properties as a map.
Source§

fn dedup(&self) -> &Dedup<Self>
where Self: Sized,

Lazily de-duplicate properties in the collection. Read more
Source§

fn is_unique(&self) -> bool

Whether the collection is known not to contain any duplicate keys. Read more
Source§

fn size(&self) -> Option<usize>

A hint on the number of properties in the collection. Read more
Source§

impl Copy for SpanCtxt

Source§

impl Eq for SpanCtxt

Source§

impl StructuralPartialEq for SpanCtxt

Auto Trait Implementations§

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§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

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

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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,

Source§

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>,

Source§

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>,

Source§

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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<P> ErasedProps for P
where P: Props,