facet_json/
serialize.rs

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
8/// Serializes a value to JSON
9pub 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
17/// Serializes a Peek instance to JSON
18pub 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
25/// Serializes a value to a writer in JSON format
26pub 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
32/// Serializes a Peek instance to a writer in JSON format
33pub 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}