Skip to main content

Span

Struct Span 

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

An active span that accumulates events and attributes.

Created via SpanCollector::start_span (root) or Span::child (nested). Submits a CompletedSpan to the collector when dropped or when end() is called explicitly.

Internally holds Option<CompletedSpan> with end_time_ns = 0 until the span finishes. On drop, end_time_ns is set and the span is submitted — no field-by-field move between separate structs.

Implementations§

Source§

impl Span

Source

pub fn child(&self, name: impl Into<Cow<'static, str>>, kind: SpanKind) -> Span

Create a child span inheriting the trace ID and collector from this span.

The child’s parent_span_id is set to this span’s span_id. If this span is a no-op (sampled out), the child is also a no-op.

Source

pub fn enter(&mut self) -> &mut Self

Set this span as the thread-local “current span” for logging integration.

The thread-local context is cleared when this span drops. Nested calls properly restore the previous context.

Source

pub fn add_event( &mut self, name: impl Into<Cow<'static, str>>, attributes: Vec<SpanAttribute>, )

Add a timestamped event to this span.

Takes ownership of the attributes vector to avoid cloning.

Source

pub fn add_simple_event(&mut self, name: impl Into<Cow<'static, str>>)

Add a timestamped event with no attributes.

Source

pub fn set_attribute( &mut self, key: impl Into<Cow<'static, str>>, value: impl Into<SpanValue>, )

Set a span attribute.

Source

pub fn set_status(&mut self, status: SpanStatus)

Set the span status.

Source

pub fn trace_id(&self) -> TraceId

Get the trace ID of this span.

Source

pub fn span_id(&self) -> SpanId

Get the span ID of this span.

Source

pub fn traceparent(&self) -> String

Encode this span’s context as a W3C traceparent header for outgoing requests.

Returns an empty string for no-op (sampled-out) spans.

Source

pub fn end(self)

Explicitly end the span and submit it to the collector.

Equivalent to dropping the span. After calling this, the span is consumed.

Trait Implementations§

Source§

impl Drop for Span

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl Freeze for Span

§

impl !RefUnwindSafe for Span

§

impl Send for Span

§

impl Sync for Span

§

impl Unpin for Span

§

impl UnsafeUnpin for Span

§

impl !UnwindSafe for Span

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FutureExt for T

Source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
Source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
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> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
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<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