icydb_core/
serialize.rs

1use crate::Error;
2use canic_memory::serialize::{deserialize as canic_deserialize, serialize as canic_serialize};
3use serde::{Serialize, de::DeserializeOwned};
4use thiserror::Error as ThisError;
5
6///
7/// SerializeError
8///
9
10#[derive(Debug, ThisError)]
11pub enum SerializeError {
12    #[error(transparent)]
13    SerializeError(#[from] canic_memory::serialize::SerializeError),
14}
15
16/// Serialize a value using the default `canic` serializer.
17///
18/// This helper keeps the error type aligned with the rest of `icydb`.
19pub fn serialize<T>(ty: &T) -> Result<Vec<u8>, Error>
20where
21    T: Serialize,
22{
23    canic_serialize(ty)
24        .map_err(SerializeError::from)
25        .map_err(Error::from)
26}
27
28/// Deserialize a value produced by [`serialize`].
29pub fn deserialize<T>(bytes: &[u8]) -> Result<T, Error>
30where
31    T: DeserializeOwned,
32{
33    canic_deserialize(bytes)
34        .map_err(SerializeError::from)
35        .map_err(Error::from)
36}