veecle_telemetry/collector/json_exporter.rs
1use super::Export;
2
3/// An exporter that outputs telemetry messages as JSON to stdout.
4///
5/// # Examples
6///
7/// ```rust
8/// use veecle_osal_std::{time::Time, thread::Thread};
9///
10/// veecle_telemetry::collector::build()
11/// .random_process_id()
12/// .console_json_exporter()
13/// .time::<Time>()
14/// .thread::<Thread>()
15/// .set_global()
16/// .unwrap();
17/// ```
18#[derive(Debug, Default)]
19pub struct ConsoleJsonExporter(());
20
21impl ConsoleJsonExporter {
22 /// A `const` version of `ConsoleJsonExporter::default()` to allow use as a `&'static`.
23 pub const DEFAULT: Self = ConsoleJsonExporter(());
24}
25
26impl Export for ConsoleJsonExporter {
27 fn export(&self, message: crate::protocol::transient::InstanceMessage) {
28 std::println!("{}", serde_json::to_string(&message).unwrap());
29 }
30}