tracelite 0.1.26

An alternative to the tracing crate which is specialized for OpenTelemetry traces
Documentation
mod tokio;
pub use tokio::{run_tokio_export_loop, spawn_tokio_export_task};

mod h2grpc;
pub use h2grpc::H2GrpcExport;

pub trait SpanExporter<B>: Send + 'static {
    fn export<'a>(&'a self, batch: &'a B) -> impl std::future::Future<Output = ()> + Send + 'a;
}

use opentelemetry_micropb::std::collector_::trace_::v1_::ExportTraceServiceRequest;
use ::tokio::sync::Mutex;
use std::sync::Arc;

#[derive(Default, Debug, Clone)]
pub struct TestExport {
    pub requests: Arc<Mutex<Vec<ExportTraceServiceRequest>>>
}

impl SpanExporter<ExportTraceServiceRequest> for TestExport {
    fn export<'a>(&'a self, batch: &'a ExportTraceServiceRequest) -> impl std::future::Future<Output = ()> + Send + 'a {
        async {
            self.requests.lock().await.push(batch.clone());
        }
    }
}