simd_json/serde/value/owned.rs
1mod de;
2mod se;
3
4use crate::OwnedValue;
5use crate::Result;
6use serde_ext::de::DeserializeOwned;
7use serde_ext::ser::Serialize;
8
9/// Tries to convert a struct that implements serde's serialize into
10/// an `OwnedValue`
11///
12/// # Errors
13///
14/// Will return `Err` if value fails to be turned into a owned value
15pub fn to_value<T>(value: T) -> Result<OwnedValue>
16where
17 T: Serialize,
18{
19 value.serialize(se::Serializer::default())
20}
21
22/// Tries to convert a `OwnedValue` into a struct that implements
23/// serde's Deserialize interface
24///
25/// # Errors
26///
27/// Will return `Err` if `value` fails to be deserialized
28pub fn from_value<T>(value: OwnedValue) -> Result<T>
29where
30 T: DeserializeOwned,
31{
32 T::deserialize(value)
33}
34
35/// Tries to convert a `&OwnedValue` into a struct that implements
36/// serde's Deserialize interface
37///
38/// # Errors
39///
40/// Will return `Err` if `value` fails to be deserialized
41pub fn from_refvalue<T>(value: &OwnedValue) -> Result<T>
42where
43 T: DeserializeOwned,
44{
45 T::deserialize(value)
46}