rama::telemetry::opentelemetry::trace

Trait TraceContextExt

pub trait TraceContextExt {
    // Required methods
    fn current_with_span<T>(span: T) -> Self
       where T: Span + Send + Sync + 'static;
    fn with_span<T>(&self, span: T) -> Self
       where T: Span + Send + Sync + 'static;
    fn span(&self) -> SpanRef<'_>;
    fn has_active_span(&self) -> bool;
    fn with_remote_span_context(&self, span_context: SpanContext) -> Self;
}
Expand description

Methods for storing and retrieving trace data in a Context.

See Context for examples of setting and retrieving the current context.

Required Methods§

fn current_with_span<T>(span: T) -> Self
where T: Span + Send + Sync + 'static,

Returns a clone of the current context with the included Span.

§Examples
use opentelemetry::{global, trace::{TraceContextExt, Tracer}, Context};

let tracer = global::tracer("example");

// build a span
let span = tracer.start("parent_span");

// create a new context from the currently active context that includes this span
let cx = Context::current_with_span(span);

// create a child span by explicitly specifying the parent context
let child = tracer.start_with_context("child_span", &cx);

fn with_span<T>(&self, span: T) -> Self
where T: Span + Send + Sync + 'static,

Returns a clone of this context with the included span.

§Examples
use opentelemetry::{global, trace::{TraceContextExt, Tracer}, Context};

fn fn_with_passed_in_context(cx: &Context) {
    let tracer = global::tracer("example");

    // build a span
    let span = tracer.start("parent_span");

    // create a new context from the given context that includes the span
    let cx_with_parent = cx.with_span(span);

    // create a child span by explicitly specifying the parent context
    let child = tracer.start_with_context("child_span", &cx_with_parent);
}

fn span(&self) -> SpanRef<'_>

Returns a reference to this context’s span, or the default no-op span if none has been set.

§Examples
use opentelemetry::{trace::TraceContextExt, Context};

// Add an event to the currently active span
Context::map_current(|cx| cx.span().add_event("An event!", vec![]));

fn has_active_span(&self) -> bool

Returns whether or not an active span has been set.

§Examples
use opentelemetry::{trace::TraceContextExt, Context};

assert!(!Context::map_current(|cx| cx.has_active_span()));

fn with_remote_span_context(&self, span_context: SpanContext) -> Self

Returns a copy of this context with the span context included.

This is useful for building propagators.

Object Safety§

This trait is not object safe.

Implementors§