canic_core/cdk/
serialize.rs1use serde::{Serialize, de::DeserializeOwned};
8use serde_cbor::{from_slice, to_vec};
9use thiserror::Error as ThisError;
10
11#[derive(Debug, ThisError)]
18pub enum SerializeError {
19 #[error("serialize error: {0}")]
20 Serialize(String),
21
22 #[error("deserialize error: {0}")]
23 Deserialize(String),
24}
25
26pub fn serialize<T>(value: &T) -> Result<Vec<u8>, SerializeError>
28where
29 T: Serialize,
30{
31 to_vec(value).map_err(|err| SerializeError::Serialize(err.to_string()))
32}
33
34pub fn deserialize<T>(bytes: &[u8]) -> Result<T, SerializeError>
36where
37 T: DeserializeOwned,
38{
39 from_slice(bytes).map_err(|err| SerializeError::Deserialize(err.to_string()))
40}