/ abzu-core / src / codec.rs
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  }