Skip to main content

Module tracer

Module tracer 

Source
Expand description

Tracer trait for observing query-flow execution.

This module defines the Tracer trait and related types for observing query execution. The default NoopTracer provides zero-cost when tracing is not needed.

§Example

use query_flow::{
    query, Db, QueryCacheKey, QueryError, QueryRuntime, SpanContext, SpanId, TraceId, Tracer,
};

// Custom tracer implementation
struct MyTracer;

impl Tracer for MyTracer {
    fn new_span_id(&self) -> SpanId {
        SpanId(1)
    }

    fn new_trace_id(&self) -> TraceId {
        TraceId(1)
    }

    fn on_query_start(&self, ctx: &SpanContext, query: &QueryCacheKey) {
        println!("Query started: {:?} (trace={:?})", query, ctx.trace_id);
    }
}

#[query]
fn double(db: &impl Db, x: i32) -> Result<i32, QueryError> {
    let _ = db;
    Ok(x * 2)
}

let runtime = QueryRuntime::with_tracer(MyTracer);
assert_eq!(*runtime.query(Double::new(21)).unwrap(), 42);

Structs§

NoopTracer
Zero-cost tracer that discards all events.
SpanContext
Context for a span within a trace, providing parent-child relationships.
SpanId
Unique identifier for a query execution span.
TraceId
Unique identifier for a trace (a complete query execution tree).

Enums§

ExecutionResult
Query execution result classification.
InvalidationReason
Reason for cache invalidation.
TracerAssetState
Asset loading state for tracing.

Traits§

Tracer
Tracer trait for observing query-flow execution.