use core::fmt::Write;
use json_streaming::blocking::{JsonArray, JsonWriter};
use json_streaming::shared::*;
use std::io;
struct ExponentialFloatFormat;
impl FloatFormat for ExponentialFloatFormat {
fn write_f64(f: &mut impl Write, value: f64) -> std::fmt::Result {
if value.is_finite() {
write!(f, "{:e}", value)
}
else {
write!(f, "null")
}
}
fn write_f32(f: &mut impl Write, value: f32) -> std::fmt::Result {
if value.is_finite() {
write!(f, "{:e}", value)
}
else {
write!(f, "null")
}
}
}
fn main() -> io::Result<()> {
let mut buf = Vec::new();
let mut json_writer = JsonWriter::new(&mut buf, CompactFormatter, ExponentialFloatFormat);
let mut arr = JsonArray::new(&mut json_writer)?;
arr.write_f64_value(1.0)?;
arr.write_f64_value(10.0)?;
arr.write_f64_value(0.1)?;
arr.end()?;
println!("formatted exponentially: {:?}", String::from_utf8(buf).unwrap());
Ok(())
}