tmc_langs_util/
serialize.rs

1//! Utility functions for de/serializing data wrapped with serde_path_to_error for better errors.
2
3use crate::JsonError;
4use serde::Serialize;
5
6pub fn to_json_string<T: Serialize>(value: &T) -> Result<String, JsonError> {
7    let mut buf = Vec::new();
8    let se = &mut serde_json::Serializer::new(&mut buf);
9    serde_path_to_error::serialize(value, se)?;
10    let string = String::from_utf8(buf).expect("invalid json from serializer");
11    Ok(string)
12}
13
14pub fn to_json_vec<T: Serialize>(value: &T) -> Result<Vec<u8>, JsonError> {
15    let mut buf = Vec::new();
16    let se = &mut serde_json::Serializer::new(&mut buf);
17    serde_path_to_error::serialize(value, se)?;
18    Ok(buf)
19}
20
21pub fn to_json_value<T: Serialize>(value: &T) -> Result<serde_json::Value, JsonError> {
22    let se = serde_json::value::Serializer;
23    let value = serde_path_to_error::serialize(value, se)?;
24    Ok(value)
25}