1use crate::{Error, Result};
4use serde::{de::DeserializeOwned, Serialize};
5
6pub fn encode<T: Serialize>(value: &T) -> Result<Vec<u8>> {
7 let mut out = Vec::with_capacity(256);
8 ciborium::ser::into_writer(value, &mut out).map_err(Error::codec)?;
9 Ok(out)
10}
11
12pub fn decode<T: DeserializeOwned>(bytes: &[u8]) -> Result<T> {
13 ciborium::de::from_reader(bytes).map_err(Error::codec)
14}
15
16pub fn sha256(input: &[u8]) -> [u8; 32] {
17 use sha2::{Digest, Sha256};
18 let mut h = Sha256::new();
19 h.update(input);
20 h.finalize().into()
21}