use crate::{Error, Result};
use serde::{de::DeserializeOwned, Serialize};
pub fn encode<T: Serialize>(value: &T) -> Result<Vec<u8>> {
let mut out = Vec::with_capacity(256);
ciborium::ser::into_writer(value, &mut out).map_err(Error::codec)?;
Ok(out)
}
pub fn decode<T: DeserializeOwned>(bytes: &[u8]) -> Result<T> {
ciborium::de::from_reader(bytes).map_err(Error::codec)
}
pub fn sha256(input: &[u8]) -> [u8; 32] {
use sha2::{Digest, Sha256};
let mut h = Sha256::new();
h.update(input);
h.finalize().into()
}