icydb_core/serialize/
mod.rs1mod cbor;
2
3use crate::error::{ErrorClass, ErrorOrigin, InternalError};
4use serde::{Serialize, de::DeserializeOwned};
5use thiserror::Error as ThisError;
6
7#[derive(Debug, ThisError)]
19pub enum SerializeError {
20 #[error("serialize error: {0}")]
21 Serialize(String),
22
23 #[error("deserialize error: {0}")]
24 Deserialize(String),
25}
26
27impl From<SerializeError> for InternalError {
28 fn from(err: SerializeError) -> Self {
29 Self::new(
30 ErrorClass::Internal,
31 ErrorOrigin::Serialize,
32 err.to_string(),
33 )
34 }
35}
36
37pub fn serialize<T>(ty: &T) -> Result<Vec<u8>, SerializeError>
41where
42 T: Serialize,
43{
44 cbor::serialize(ty)
45}
46
47pub fn deserialize<T>(bytes: &[u8]) -> Result<T, SerializeError>
49where
50 T: DeserializeOwned,
51{
52 cbor::deserialize(bytes)
53}
54
55pub fn deserialize_bounded<T>(bytes: &[u8], max_bytes: usize) -> Result<T, SerializeError>
59where
60 T: DeserializeOwned,
61{
62 cbor::deserialize_bounded(bytes, max_bytes)
63}