use super::utils::check_data_size;
use super::Serializer;
use crate::error::{CacheError, Result};
use serde::{de::DeserializeOwned, Serialize};
#[derive(Clone, Debug)]
pub struct BincodeSerializer;
const MAX_BINCODE_SIZE: usize = 10 * 1024 * 1024;
impl Serializer for BincodeSerializer {
fn serialize<T: Serialize>(&self, value: &T) -> Result<Vec<u8>> {
bincode::serialize(value).map_err(|e| CacheError::Serialization(e.to_string()))
}
fn deserialize<T: DeserializeOwned>(&self, data: &[u8]) -> Result<T> {
check_data_size(data, MAX_BINCODE_SIZE, "Bincode")?;
bincode::deserialize(data).map_err(|e| CacheError::Serialization(e.to_string()))
}
}