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}