Skip to main content

Module de

Module de 

Available on crate features dial9 and serde-deserialize only.
Expand description

serde [Deserializer] for raw trace events.

This module presents a RawEvent (the callback type yielded by Decoder::for_each_event) as a flat map compatible with serde’s internally-tagged-enum representation.

§Mapping

The deserializer presents each event as a map with these entries (in order):

  1. "event" → the schema name (the discriminant for #[serde(tag = "event")]).
  2. "timestamp_ns" → the absolute frame-header timestamp (only if the schema has has_timestamp = true).
  3. One entry per schema field, keyed by field name.

Pool resolution is automatic:

§Example

use dial9_trace_format::decoder::Decoder;
use serde::Deserialize;

#[derive(Deserialize)]
#[serde(tag = "event")]
enum MyEvent {
    #[serde(rename = "PollStart")]
    PollStart {
        timestamp_ns: u64,
        worker_id: u64,
    },
    #[serde(other)]
    Other,
}

let mut dec = Decoder::new(bytes).unwrap();
dec.for_each_event(|raw| {
    match raw.deserialize::<MyEvent>() {
        Ok(MyEvent::PollStart { timestamp_ns, worker_id }) => {
            println!("poll {worker_id} at {timestamp_ns}");
        }
        Ok(MyEvent::Other) => {}
        Err(e) => eprintln!("decode error: {e}"),
    }
}).unwrap();

Structs§

DeserError
Error returned when deserializing a trace event into a typed value fails.

Functions§

from_raw_event
Deserialize a RawEvent into T.