icydb_core/
serialize.rs

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///
9/// SerializeError
10///
11
12#[derive(Debug, ThisError)]
13pub enum SerializeError {
14    #[error(transparent)]
15    SerializeError(#[from] canic_core::utils::serialize::SerializeError),
16}
17
18/// Serialize a value using the default `canic` serializer.
19///
20/// This helper keeps the error type aligned with the rest of `icydb`.
21pub 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
30/// Deserialize a value produced by [`serialize`].
31pub 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}