Skip to main content

canic_core/cdk/
serialize.rs

1use serde::{Serialize, de::DeserializeOwned};
2use serde_cbor::{from_slice, to_vec};
3use thiserror::Error as ThisError;
4
5///
6/// SerializeError
7///
8#[derive(Debug, ThisError)]
9pub enum SerializeError {
10    #[error("serialize error: {0}")]
11    Serialize(String),
12
13    #[error("deserialize error: {0}")]
14    Deserialize(String),
15}
16
17pub fn serialize<T>(value: &T) -> Result<Vec<u8>, SerializeError>
18where
19    T: Serialize,
20{
21    to_vec(value).map_err(|err| SerializeError::Serialize(err.to_string()))
22}
23
24pub fn deserialize<T>(bytes: &[u8]) -> Result<T, SerializeError>
25where
26    T: DeserializeOwned,
27{
28    from_slice(bytes).map_err(|err| SerializeError::Deserialize(err.to_string()))
29}