1use facet_core::Facet;
2use facet_reflect::Peek;
3use facet_serialize::serialize_iterative;
4use std::io::{self, Write};
5
6use crate::json_serializer::JsonSerializer;
7
8pub fn to_string<'a, T: Facet<'a>>(value: &T) -> String {
10 let peek = Peek::new(value);
11 let mut output = Vec::new();
12 let mut serializer = JsonSerializer::new(&mut output);
13 serialize_iterative(peek, &mut serializer).unwrap();
14 String::from_utf8(output).unwrap()
15}
16
17pub fn peek_to_string(peek: &Peek<'_, '_>) -> String {
19 let mut output = Vec::new();
20 let mut serializer = JsonSerializer::new(&mut output);
21 serialize_iterative(*peek, &mut serializer).unwrap();
22 String::from_utf8(output).unwrap()
23}
24
25pub fn to_writer<'a, T: Facet<'a>, W: Write>(value: &T, writer: &mut W) -> io::Result<()> {
27 let peek = Peek::new(value);
28 let mut serializer = JsonSerializer::new(writer);
29 serialize_iterative(peek, &mut serializer)
30}
31
32pub fn peek_to_writer<W: Write>(peek: &Peek<'_, '_>, writer: &mut W) -> io::Result<()> {
34 let mut serializer = JsonSerializer::new(writer);
35 serialize_iterative(*peek, &mut serializer)
36}