1use serde::{Serialize, de::DeserializeOwned};
8use serde_cbor::{from_slice, to_vec};
9use thiserror::Error as ThisError;
10
11#[derive(Debug, ThisError)]
16pub enum SerializeError {
17 #[error("serialize error: {0}")]
19 Serialize(String),
20
21 #[error("deserialize error: {0}")]
23 Deserialize(String),
24}
25
26pub fn serialize<T>(value: &T) -> Result<Vec<u8>, SerializeError>
30where
31 T: Serialize,
32{
33 to_vec(value).map_err(|err| SerializeError::Serialize(err.to_string()))
34}
35
36pub fn deserialize<T>(bytes: &[u8]) -> Result<T, SerializeError>
40where
41 T: DeserializeOwned,
42{
43 from_slice(bytes).map_err(|err| SerializeError::Deserialize(err.to_string()))
44}