spacejson 0.0.14

Derive JSON interfaces for types
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
use crate::Json;
use anyhow::Result;
use serde::{Serialize, de::DeserializeOwned};

impl<M: Serialize + DeserializeOwned, N> Json<Option<M>> for Option<N>
where
    N: Json<M>,
{
    fn to_json(self) -> Option<M> {
        self.map(|v| v.to_json())
    }

    fn from_json(json: Option<M>) -> Result<Self> {
        json.map(|v| N::from_json(v)).transpose()
    }
}