nullnet-libtoken 0.3.3

Library for managing and interacting with NullNet token structure
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use serde::de::Error as DeError;
use serde::{Deserialize, Deserializer};
use serde_json::Value;

pub fn empty_object_or_null_is_none<'de, D, T>(deserializer: D) -> Result<Option<T>, D::Error>
where
    D: Deserializer<'de>,
    T: Deserialize<'de>,
{
    let opt = Option::<Value>::deserialize(deserializer)?;

    match opt {
        None => Ok(None),
        Some(Value::Object(map)) if map.is_empty() => Ok(None),
        Some(value) => T::deserialize(value).map(Some).map_err(D::Error::custom),
    }
}