Skip to main content

provenant/output_schema/
serde_helpers.rs

1// SPDX-FileCopyrightText: Provenant contributors
2// SPDX-License-Identifier: Apache-2.0
3
4use serde::ser::Error as SerError;
5use serde::{Serialize, Serializer};
6use serde_json::{Map, Value};
7use std::collections::HashMap;
8
9pub fn serialize_optional_map_as_object<S, T>(
10    value: &Option<HashMap<String, T>>,
11    serializer: S,
12) -> Result<S::Ok, S::Error>
13where
14    S: Serializer,
15    T: Serialize,
16{
17    match value {
18        Some(map) => map.serialize(serializer),
19        None => HashMap::<String, T>::new().serialize(serializer),
20    }
21}
22
23#[allow(dead_code)]
24pub fn is_false(value: &bool) -> bool {
25    !value
26}
27
28pub fn insert_json<S, E>(map: &mut Map<String, Value>, key: &str, value: S) -> Result<(), E>
29where
30    S: Serialize,
31    E: SerError,
32{
33    map.insert(
34        key.to_string(),
35        serde_json::to_value(value).map_err(E::custom)?,
36    );
37    Ok(())
38}