use opentelemetry::Context;
use opentelemetry::trace::{SpanBuilder, TraceContextExt, Tracer};
pub trait DynTracer: Send + Sync {
fn start_in(&self, builder: SpanBuilder, parent: &Context) -> Context;
}
impl<T> DynTracer for T
where
T: Tracer + Send + Sync,
T::Span: Send + Sync + 'static,
{
fn start_in(&self, builder: SpanBuilder, parent: &Context) -> Context {
let span = self.build_with_context(builder, parent);
parent.with_span(span)
}
}