Skip to main content

spatialrust_runtime/
trace.rs

1//! Lightweight structured tracing for robotics pipelines.
2
3/// Trace severity.
4#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
5pub enum TraceLevel {
6    /// Informational.
7    Info,
8    /// Warning.
9    Warn,
10    /// Error.
11    Error,
12}
13
14/// One pipeline trace event.
15#[derive(Clone, Debug, PartialEq, Eq)]
16pub struct TraceEvent {
17    /// Severity.
18    pub level: TraceLevel,
19    /// Stage name.
20    pub stage: String,
21    /// Message.
22    pub message: String,
23}
24
25/// Append-only trace log.
26#[derive(Clone, Debug, Default, PartialEq, Eq)]
27pub struct TraceLog {
28    events: Vec<TraceEvent>,
29}
30
31impl TraceLog {
32    /// Creates an empty log.
33    #[must_use]
34    pub fn new() -> Self {
35        Self::default()
36    }
37
38    /// Pushes an event.
39    pub fn push(&mut self, event: TraceEvent) {
40        self.events.push(event);
41    }
42
43    /// Returns events.
44    #[must_use]
45    pub fn events(&self) -> &[TraceEvent] {
46        &self.events
47    }
48}