1use crate::Error;
2use canic_core::utils::serialize::{
3 deserialize as canic_deserialize, serialize as canic_serialize,
4};
5use serde::{Serialize, de::DeserializeOwned};
6use thiserror::Error as ThisError;
7
8#[derive(Debug, ThisError)]
13pub enum SerializeError {
14 #[error(transparent)]
15 SerializeError(#[from] canic_core::utils::serialize::SerializeError),
16}
17
18pub fn serialize<T>(ty: &T) -> Result<Vec<u8>, Error>
22where
23 T: Serialize,
24{
25 canic_serialize(ty)
26 .map_err(SerializeError::from)
27 .map_err(Error::from)
28}
29
30pub fn deserialize<T>(bytes: &[u8]) -> Result<T, Error>
32where
33 T: DeserializeOwned,
34{
35 canic_deserialize(bytes)
36 .map_err(SerializeError::from)
37 .map_err(Error::from)
38}