Skip to main content

cell_codec/
lib.rs

1// SPDX-License-Identifier: MIT
2// Copyright (c) 2025 Leif Rydenfalk – https://github.com/Leif-Rydenfalk/cell
3
4#![no_std]
5
6extern crate alloc;
7
8use rkyv::ser::serializers::AllocSerializer;
9use rkyv::ser::Serializer;
10use rkyv::Serialize;
11use alloc::vec::Vec;
12
13pub struct RkyvCodec;
14
15impl RkyvCodec {
16    pub fn encode<T>(item: &T) -> Result<Vec<u8>, &'static str>
17    where
18        T: Serialize<AllocSerializer<1024>>,
19    {
20        let mut serializer = AllocSerializer::<1024>::default();
21        serializer.serialize_value(item).map_err(|_| "Serialization failed")?;
22        Ok(serializer.into_serializer().into_inner().into_vec())
23    }
24}