rbs/value_serde/
mod.rs

1pub use self::de::{from_value, from_value_ref};
2pub use self::se::{to_value, to_value_def};
3
4mod de;
5mod se;
6
7#[cfg(test)]
8mod test {
9    use serde::{Deserialize, Deserializer, Serialize, Serializer};
10    use serde::ser::SerializeMap;
11    use crate::{to_value, Value};
12
13    #[test]
14    fn test_ser() {
15        let s = to_value!(1);
16        assert_eq!(s, Value::I32(1));
17    }
18
19    pub struct A {}
20    impl Serialize for A {
21        fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
22        where
23            S: Serializer,
24        {
25            println!("{}", std::any::type_name::<S>());
26            serializer.serialize_map(None)
27                ?.end()
28        }
29    }
30
31    impl<'de> Deserialize<'de> for A {
32        fn deserialize<D>(_deserializer: D) -> Result<Self, D::Error>
33        where
34            D: Deserializer<'de>,
35        {
36            println!("{}", std::any::type_name::<D>());
37            Ok(A {})
38        }
39    }
40
41    #[test]
42    fn test_ser_struct() {
43        let v = to_value!(A{});
44        let _: A = crate::from_value(v).unwrap();
45    }
46}