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