veecle_telemetry/collector/
json_exporter.rs

1use super::Export;
2use crate::protocol::InstanceMessage;
3
4/// An exporter that outputs telemetry messages as JSON to stdout.
5///
6/// # Examples
7///
8/// ```rust
9/// use veecle_telemetry::collector::{ConsoleJsonExporter, set_exporter, ProcessId};
10///
11/// let process_id = ProcessId::random(&mut rand::rng());
12/// set_exporter(process_id, &ConsoleJsonExporter::DEFAULT).unwrap();
13/// ```
14#[derive(Debug, Default)]
15pub struct ConsoleJsonExporter(());
16
17impl ConsoleJsonExporter {
18    /// A `const` version of `ConsoleJsonExporter::default()` to allow use as a `&'static`.
19    pub const DEFAULT: Self = ConsoleJsonExporter(());
20}
21
22impl Export for ConsoleJsonExporter {
23    fn export(&self, message: InstanceMessage) {
24        std::println!("{}", serde_json::to_string(&message).unwrap());
25    }
26}