Struct SpanBuilder

pub struct SpanBuilder {
    pub trace_id: Option<TraceId>,
    pub span_id: Option<SpanId>,
    pub span_kind: Option<SpanKind>,
    pub name: Cow<'static, str>,
    pub start_time: Option<SystemTime>,
    pub end_time: Option<SystemTime>,
    pub attributes: Option<Vec<KeyValue>>,
    pub events: Option<Vec<Event>>,
    pub links: Option<Vec<Link>>,
    pub status: Status,
    pub sampling_result: Option<SamplingResult>,
}
Available on crate feature opentelemetry only.
Expand description

SpanBuilder allows span attributes to be configured before the span has started.

use opentelemetry::{
    global,
    trace::{TracerProvider, SpanBuilder, SpanKind, Tracer},
};

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

// The builder can be used to create a span directly with the tracer
let _span = tracer.build(SpanBuilder {
    name: "example-span-name".into(),
    span_kind: Some(SpanKind::Server),
    ..Default::default()
});

// Or used with builder pattern
let _span = tracer
    .span_builder("example-span-name")
    .with_kind(SpanKind::Server)
    .start(&tracer);

Fields§

§trace_id: Option<TraceId>

Trace id, useful for integrations with external tracing systems.

§span_id: Option<SpanId>

Span id, useful for integrations with external tracing systems.

§span_kind: Option<SpanKind>

Span kind

§name: Cow<'static, str>

Span name

§start_time: Option<SystemTime>

Span start time

§end_time: Option<SystemTime>

Span end time

§attributes: Option<Vec<KeyValue>>

Span attributes that are provided at the span creation time. More attributes can be added afterwards. Providing duplicate keys will result in multiple attributes with the same key, as there is no de-duplication performed.

§events: Option<Vec<Event>>

Span events

§links: Option<Vec<Link>>

Span Links

§status: Status

Span status

§sampling_result: Option<SamplingResult>

Sampling result

Implementations§

§

impl SpanBuilder

SpanBuilder methods

pub fn from_name<T>(name: T) -> SpanBuilder
where T: Into<Cow<'static, str>>,

Create a new span builder from a span name

pub fn with_trace_id(self, trace_id: TraceId) -> SpanBuilder

Specify trace id to use if no parent context exists

pub fn with_span_id(self, span_id: SpanId) -> SpanBuilder

Assign span id

pub fn with_kind(self, span_kind: SpanKind) -> SpanBuilder

Assign span kind

pub fn with_start_time<T>(self, start_time: T) -> SpanBuilder
where T: Into<SystemTime>,

Assign span start time

pub fn with_end_time<T>(self, end_time: T) -> SpanBuilder
where T: Into<SystemTime>,

Assign span end time

pub fn with_attributes<I>(self, attributes: I) -> SpanBuilder
where I: IntoIterator<Item = KeyValue>,

Assign span attributes from an iterable. Providing duplicate keys will result in multiple attributes with the same key, as there is no de-duplication performed.

pub fn with_events(self, events: Vec<Event>) -> SpanBuilder

Assign events

Assign links

pub fn with_status(self, status: Status) -> SpanBuilder

Assign status code

pub fn with_sampling_result( self, sampling_result: SamplingResult, ) -> SpanBuilder

Assign sampling result

pub fn start<T>(self, tracer: &T) -> <T as Tracer>::Span
where T: Tracer,

Builds a span with the given tracer from this configuration.

pub fn start_with_context<T>( self, tracer: &T, parent_cx: &Context, ) -> <T as Tracer>::Span
where T: Tracer,

Builds a span with the given tracer from this configuration and parent.

Trait Implementations§

§

impl Clone for SpanBuilder

§

fn clone(&self) -> SpanBuilder

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
§

impl Debug for SpanBuilder

§

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

Formats the value using the given formatter. Read more
§

impl Default for SpanBuilder

§

fn default() -> SpanBuilder

Returns the “default value” for a type. Read more

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.

§

impl<T> FutureExt for T

§

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

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

fn with_current_context(self) -> WithContext<Self>

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

impl<T> Instrument for T

§

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

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

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,

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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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