/// Extract the current OpenTelemetry trace context as hex strings. /// /// Returns `(trace_id_hex, span_id_hex)` if a valid OTel context is /// available from the current `tracing` span, or `None` otherwise. #[cfg(feature = "opentelemetry")] pub fn get_current_trace_context() -> Option<(String, String)> { use opentelemetry::trace::TraceContextExt as _; use tracing_opentelemetry::OpenTelemetrySpanExt as _; let span = tracing::Span::current(); let cx = span.context(); let span_ctx = cx.span(); let sc = span_ctx.span_context(); if !sc.is_sampled() { return None; } let trace_id = sc.trace_id().to_string(); let span_id = sc.span_id().to_string(); Some((trace_id, span_id)) } /// Fallback when `opentelemetry` feature is disabled. #[cfg(not(feature = "opentelemetry"))] pub fn get_current_trace_context() -> Option<(String, String)> { None }