Skip to main content

am_core/
output.rs

1use serde::Serialize;
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq)]
4pub enum Format {
5    Json,
6    Text,
7}
8
9impl Format {
10    pub fn from_str_opt(s: Option<&str>) -> Self {
11        match s {
12            Some("text") => Format::Text,
13            _ => Format::Json,
14        }
15    }
16}
17
18pub fn print_json<T: Serialize>(value: &T) -> Result<(), serde_json::Error> {
19    let json = serde_json::to_string(value)?;
20    println!("{json}");
21    Ok(())
22}
23
24pub fn print_json_pretty<T: Serialize>(value: &T) -> Result<(), serde_json::Error> {
25    let json = serde_json::to_string_pretty(value)?;
26    println!("{json}");
27    Ok(())
28}
29
30pub fn eprint_json<T: Serialize>(value: &T) -> Result<(), serde_json::Error> {
31    let json = serde_json::to_string(value)?;
32    eprintln!("{json}");
33    Ok(())
34}
35
36pub fn eprint_json_pretty<T: Serialize>(value: &T) -> Result<(), serde_json::Error> {
37    let json = serde_json::to_string_pretty(value)?;
38    eprintln!("{json}");
39    Ok(())
40}