codec.rs
1 //! Storage Codec 2 //! 3 //! Centralizes serialization for database persistence. 4 //! Currently uses postcard, but isolates the dependency. 5 6 use crate::node::NodeError; 7 use serde::{de::DeserializeOwned, Serialize}; 8 9 /// Encode a domain object for storage 10 pub fn encode<T: Serialize>(item: &T) -> Result<Vec<u8>, NodeError> { 11 postcard::to_allocvec(item).map_err(|e| NodeError::Serialization(e.to_string())) 12 } 13 14 /// Decode a domain object from storage 15 pub fn decode<T: DeserializeOwned>(bytes: &[u8]) -> Result<T, NodeError> { 16 postcard::from_bytes(bytes).map_err(|e| NodeError::Serialization(e.to_string())) 17 }