1pub mod de;
7pub mod error;
8pub mod ser;
9pub mod value;
10
11pub use error::{Error, Result};
12pub use value::Value;
13
14use serde::{de::DeserializeOwned, Serialize};
15
16pub fn from_value<T: DeserializeOwned>(val: Value) -> Result<T> {
18 T::deserialize(de::Deserializer::from(val))
19}
20
21pub fn to_value<T: Serialize>(val: &T) -> Result<Value> {
23 val.serialize(ser::Serializer::new())
24}
25
26pub fn to_vec<T: Serialize>(val: &T) -> Result<Vec<u8>> {
28 let value = to_value(val)?;
29 Ok(bincode::encode_to_vec(value, bincode::config::standard())?)
30}
31
32pub fn from_slice<T: DeserializeOwned>(val: &[u8]) -> Result<T> {
34 let (value, _) = bincode::decode_from_slice(val, bincode::config::standard())?;
35 from_value(value)
36}